5

Używam aplikacji HTA do próby zainstalowania produktu przy użyciu narzędzia WindowsInstaller.Installer jako obiektu ActiveXObject. Przy użyciu tego samego modelu HTA, który był używany w przeszłości, próba instalacji powoduje zgłoszenie błędu: "Błąd API Msi: InstallProduct, PackagePath, PropertyValues".Instalator HTA dla niepowodzenia MSI

Próbowałem tego zarówno w systemie Windows Vista i Server 2003 bez powodzenia. Oba używają IE8, więc pomyślałem, że może to być jakiś problem z kompatybilnością ActiveX. Następnie przetestowałem go w IE6 i napotkałem ten sam problem - jednak z powodzeniem używaliśmy tego formatu w przypadku HTA kilka razy w przeszłości. Próbuję zainstalować z konta administratora na obu komputerach, a sam MSI jest wykonywany zgodnie z oczekiwaniami.

Do tej pory próbowałem następujące:

  1. Zmiana ścieżki pliku dla MSI do absolutnego
  2. Zmiana „Ustawienia wiersza komend” (drugi parametr) dla metody InstallProduct do „action = ADMIN”(aby wymusić administratorem instalacji) i«action = iNSTALL»
  3. Zmiana ustawień ActiveX w IE -«Inicjowanie i wykonywanie skryptów formantów ActiveX nie zaznaczonych jako bezpieczne do obsługi skryptów»na«Prompt»
  4. Dodawanie localhost do zaufanych witryn lista w IE
  5. Dodawanie tagów kompatybilność meta do HTA uruchomić w IE7Emulation, IE5 lub IE6 trybach

Oto metoda/kontekst, który się niepowodzeniem:

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

Metoda ta jest następnie wywoływana po kliknięciu na zasadzie „install” przycisk następująco

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

mam Googled szeroko i tylko znaleźć podobnych problemów, gdy ktoś spróbować do zainstalowania Silverlight 3 (który najwyraźniej został naprawiony). Jakieś pomysły?

+0

Czy próbowałeś działa ten skrypt pod Windows Scripting pliku hosta WSF zamiast HTA? Jeśli tak, czy wynik był taki sam? – dreftymac

+0

Uruchomiłem twój przykład bez konta administracyjnego na komputerze XP i działa. (usunięto tylko "" display: none, visibility: hidden; "') Więc może to być szczególnie ważne dla Vista/2003? – Paul

+1

Wydaje się, że działa dobrze dla mnie w systemie Windows 7. Czy sprawdziłeś dziennik zdarzeń aplikacji (powinien pochodzić z MsiInstaller) dla kodu błędu _real_? – tyranid

Odpowiedz

1

Mam podobny problem z moim zestawem instalacyjnym.

użyłem VBScript i uruchomić MSI

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