2014-10-28 35 views
10

Stworzyłem MSI z WIX, który potrzebuje podwyższonych uprawnień, aby działały poprawnie. W MSI Project, I określono to poprzezWIX Burn Bootstrapper nie pyta o prawa administratora dla mojego MSI

<Package [...] InstallPrivileges="elevated" /> 

Teraz ten MSI zawarte w projekcie zwyczaj bootsrapper, na podstawie WixWPF Bootstrapper. Jak rozumiem, sam bootstrapper nie powinien zmieniać stanu komputera i dlatego nie powinien wymagać podniesionych uprawnień.

Chciałbym teraz oczekiwać, że Bootstrapper automatycznie uruchomi zintegrowany MSI z podwyższonymi uprawnieniami, monitując użytkownika o okno dialogowe UAC, jeśli to konieczne. Ale tak nie jest. Zamiast tego instalacja kończy się niepowodzeniem. Działa to jednak, gdy uruchamiam plik wykonywalny bootstrapper jawnie jako administrator.

Co zrobić, aby program ładujący prosił o podwyższone uprawnienia podczas instalowania pakietu MSI?

+0

Chcesz wiedzieć, czy ustawiłeś ten atrybut dla swojego MSI? InstallScope = "perMachine" – Isaiah4110

+0

@ Isaiah4110 Nie ustawiłem tego atrybutu; Sprawdzę jutro, czy to ma jakieś znaczenie, ponieważ nie mam teraz dostępu do mojego projektu. Dzięki! –

+0

@ Isaiah4110 Dzięki, to było to! Jeśli napiszesz to jako odpowiedź, chętnie je zaakceptuję. –

Odpowiedz

13

Ponieważ nie ustawiono atrybutu MSI dla INSTALLSCOPE, domyślna jest instalacja dla użytkownika, a aplikacja ładująca początkowo uznała, że ​​nie potrzebuje żadnych uprawnień ADMIN/Podwyższonych, aby go uruchomić.

Teraz w twoim przypadku jesteś autorem MSI i łatwo było dodać InstallScope do elementu pakietu.

InstallScope="perMachine" 

Jeżeli nie jesteś autorem MSI, nadal inicjującego zapewnia właściwości, które można wykorzystać, aby zmusić maszynę per-dla MSI/EXE.

  1. MSIPackage - ForcePerMachine
  2. EXEPackage - PerMachine

Więc dlaczego inicjującego myśleć, że Per-Maszynie zainstalować potrzeb podwyższonymi uprawnieniami poszczególnych użytkowników i nie robi? Dość prosta instalacja dla każdego użytkownika, że ​​wartość rejestru jest zapisana pod HKEY_CURRENT_USER, a dla instalacji na maszynę wartość rejestru jest zapisywana w HKEY_LOCAL_MACHINE. Tylko użytkownicy administracyjni mogą czytać/zapisywać do HKLM.

+0

Dzięki, doceniam dodatkowe informacje dodatkowe! –