5

Sto utilizzando un HTA per provare a installare un prodotto utilizzando WindowsInstaller.Installer come ActiveXObject. Utilizzando lo stesso modello HTA che è stato utilizzato in passato, il tentativo di installazione genera l'errore: "Errore API Msi: InstallProduct, PackagePath, PropertyValues".HTA installer per MSI fallito

Ho provato questo su Windows Vista e Server 2003 senza successo. Entrambi hanno utilizzato IE8, quindi ho pensato che potesse essere una sorta di problema di compatibilità ActiveX. L'ho testato in IE6 e ho riscontrato lo stesso problema, tuttavia, in passato, abbiamo utilizzato questo formato per HTA diverse volte con successo. Sto tentando di installare da un account amministratore su entrambe le macchine e il file MSI stesso viene eseguito come previsto.

Finora ho provato quanto segue:

  1. Modifica il percorso del file per il MSI di assoluta
  2. Modifica delle "impostazioni della linea di comando" (il secondo parametro) per il metodo InstallProduct a "ACTION = ADMIN"(per forzare un amministratore di installazione) e 'ACTION = INSTALL'
  3. Modifica delle impostazioni ActiveX in IE - 'inizializzare e script controlli ActiveX non contrassegnati come sicuri per lo script' a 'Prompt'
  4. Aggiungendo localhost ai siti attendibili elenco in IE
  5. Aggiunta la compatibilità meta tag per l'HTA per l'esecuzione in IE7Emulation, IE5 o IE6 modalità

Ecco il metodo/contesto che sta fallendo:

var Software = new Array(
    new Array("..\\Software\\Product.msi", "ProductCode")); 

    function run_msi(i) 
{ 
    try 
    { 
     //Execute MSI application install on error resume next 
     var msi = new ActiveXObject("WindowsInstaller.Installer"); 
     var installer = Software[i][0]; 
     msi.UILevel = 5; // full interactive mode 
     msi.InstallProduct(installer, ""); 
    } 
    catch (e) 
    { 
     alert ("Unable to launch the Installer Package. This may be because you do not have permission to install software."); 
    } 
    // Check the install status of the MSI to ensure it is in the registry 
    RegistryKeyExists(i); 
} 

Il metodo viene chiamato quando si fa clic su un pulsante "install" come segue

<td><span class="link" style="display: none; visibility: hidden" id="SoftwareTextTrue0" onclick="javascript:run_msi(0);">Uninstall</span> <span class="link" style="display: none; visibility: hidden" id="SoftwareTextFalse0" onclick="javascript:run_msi(0);">Install</span> </td>

ho Googled ampiamente e si trova solo un problema correlato quando qualcuno era provare per installare Silverlight 3 (che apparentemente è stato riparato). Qualche idea?

+0

Hai provato l'esecuzione di questo stesso script in File .wsf Windows Scripting Host, invece di HTA? Se è così, il risultato è stato lo stesso? – dreftymac

+0

Ho eseguito il tuo esempio senza account amministrativo su una macchina XP e funziona. (rimosso solo il '' display: none; visibility: hidden; "') Quindi potrebbe essere particolare per Vista/2003? – Paul

+1

Sembra funzionare bene per me su Windows 7. Avete controllato il registro eventi dell'applicazione (dovrebbe essere di MsiInstaller) per il codice di errore _real_? – tyranid

risposta

1

Ho un problema simile con il mio set di installazione.

Ho usato un VBScript e avviare il MSI

Set sh = CreateObject("WScript.Shell") 
l_command = "%SystemRoot%\System32\msiexec.exe /i """ & sh.CurrentDirectory & "\" & p_file & """" 
sh.Exec l_command