5

Estoy usando una HTA para intentar instalar un producto usando WindowsInstaller.Installer como ActiveXObject. Usando el mismo modelo de HTA que se ha utilizado en el pasado, el intento de instalación arroja el error: "Error de la API Msi: InstallProduct, PackagePath, PropertyValues".Instalador HTA para MSI que falla

He intentado esto en Windows Vista y Server 2003 sin éxito. Ambos han estado usando IE8, así que pensé que podría ser algún tipo de problema de compatibilidad con ActiveX. Luego lo probé en IE6 y encontré el mismo problema; sin embargo, hemos utilizado este formato para HTA varias veces en el pasado con éxito. Estoy intentando instalar desde una cuenta de administrador en ambas máquinas, y la misma MSI se ejecuta como se esperaba.

Hasta aquí he intentado lo siguiente:

  1. Cambio de la ruta de archivo del MSI a absoluta
  2. Cambio de los "valores de la línea de comando" (el segundo parámetro) para el método InstallProduct a "ACTION = admin"(para forzar un administrador instalar) y 'ACTION = instalar'
  3. Cambiar la configuración de ActiveX en IE - 'Inicializar y escritura de los controles ActiveX no marcados como seguros para scripting' a '
  4. Adición localhost del sistema' a los sitios de confianza lista en IE
  5. Adición de etiquetas meta compatibilidad con la HTA para funcionar en IE7Emulation, IE5 o IE6 modos

Aquí es el método/contexto que está fallando:

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); 
} 

El método se llama a continuación, al hacer clic en una botón "instalar" de la siguiente

<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>

he buscado en Google mucho y sólo se encuentra un tema relacionado cuando alguien era intentar instalar Silverlight 3 (que aparentemente ya se solucionó). ¿Algunas ideas?

+0

Ha intentado ejecutar este mismo guión bajo el expediente .wsf Windows Scripting Host en lugar de ETS? Si es así, ¿el resultado fue el mismo? – dreftymac

+0

He ejecutado su ejemplo sin una cuenta administrativa en una máquina con XP y funciona. (solo eliminó '' display: none; visibility: hidden; "') Entonces, ¿podría ser particular para Vista/2003? – Paul

+1

Parece que funciona bien para mí en Windows 7. ¿Ha comprobado el registro de eventos de la aplicación (debería ser de MsiInstaller) para el código de error _real_? – tyranid

Respuesta

1

Tengo un problema similar con mi instalación.

he usado un VBScript y comenzar el MSI

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