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:
- Zmiana ścieżki pliku dla MSI do absolutnego
- Zmiana „Ustawienia wiersza komend” (drugi parametr) dla metody InstallProduct do „action = ADMIN”(aby wymusić administratorem instalacji) i«action = iNSTALL»
- Zmiana ustawień ActiveX w IE -«Inicjowanie i wykonywanie skryptów formantów ActiveX nie zaznaczonych jako bezpieczne do obsługi skryptów»na«Prompt»
- Dodawanie localhost do zaufanych witryn lista w IE
- 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?
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
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
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