Mam długiego instalatora, który używa RegistryValue do konfiguracji serwera .Net COM. Instalator jest 32-bitowy. Chciałbym mieć ustawienia rejestru również dla 64-bitowych systemów operacyjnych. Moje badania pokazują, że w tym celu potrzebuję osobnego 64-bitowego instalatora. Dobra, jak mogę mieć bootstrappera, który wykrywa system operacyjny i wywołuje poprawne 32 lub 64-bitowe .msi?W jaki sposób instalatory oparte na WIX mogą rejestrować COM dla 32- i 64-bitowych systemów Windows?
W jaki sposób instalatory oparte na WIX mogą rejestrować COM dla 32- i 64-bitowych systemów Windows?
Odpowiedz
Musisz sam napisać bootstrapper.
WiX nie obsługuje mieszanych pakietów 32/64 bitowych, ponieważ Instalator Windows ich nie obsługuje. Jednak niektóre komercyjne narzędzia używają niestandardowego programu ładującego i 2 plików MSI do obsługi mieszanego instalatora.
Nie chciałem zaakceptować tej odpowiedzi, ale zajrzałem do Burn w Wix 3.6, ale wygląda na to, że nie zezwalam na interfejs użytkownika wbudowanych MSI. Dla moich celów w tej chwili, który nie działa. Tak więc, niestety, będę musiał stworzyć własnego Bootstrappera. Spójrz na Burn, aby sprawdzić, czy jest on odpowiedni dla Ciebie. – KevM
WiX obsługuje paczki 32/64 bitowe: http://jpassing.com/2009/10/09/mixing-32-and-64-bit-components-in-a-single-msi/ Check @Thomas Schlaefer reply. –
Miałem ten sam problem z niestandardowym rozszerzeniem nakładki powłoki systemu Windows, które musi zapewniać 32-bitową bibliotekę dll dla 32-bitowych systemów Windows i 64-bitową bibliotekę dll dla 64-bitowego systemu Windows. Mój 32-bitowy plik msi zapisałby wpisy rejestru tylko w węźle WoW6432 w systemie 64-bitowym, więc rozszerzenie powłoki nie działało.
roztworu (testowane wix-3.5.2519.0 Win7 x86 lub x64):
- utworzenia dwóch elementów, jeden instalacji tylko w 32-bitowym, a drugi będzie zainstalować jedynie na zasadzie System 64-bitowy.
- Użyj elementu "Condition" wewnątrz każdego komponentu, aby sprawdzić zgodność systemu operacyjnego. Użyłem Msix64, może również działać z VersionNT64 ...
- 64-bitowy składnik musi mieć atrybut Win64 ustawiony na "tak".
- Niestety, to nie zadziała poprawnie po wyjęciu z pudełka, ponieważ light.exe zgłasza błąd (błąd LGHT0204: ICE80: ten pakiet zawiera komponent 64-bitowy, ale właściwość Podsumowanie szablonu nie zawiera Intel64 ani x64.):
- rozwiązaniem jest uruchomienie pliku light.exe z wyłączonym sprawdzaniem ICE80 (użyj parametru -sice: ICE80). Teraz plik msi zostanie wygenerowany i może być używany na obu platformach.
przykład:
<Component Id="shellext_32.dll" DiskId="1" Guid="YOUR-GUID1">
<!-- this will be installed only on a 32-bit System-->
<Condition><![CDATA[NOT Msix64]]></Condition>
<!-- copy 32-bit Dll file...-->
<File Id="blah blah... />
<RegistryKey Id="MyShellIconOverlay" Root="HKLM"Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\MyIconOverlay" Action="createAndRemoveOnUninstall">
<RegistryValue Type="string" Value="{GUID...}" />
</RegistryKey>
</Component>
<Component Id="shellext_64.dll" DiskId="1" Guid="YOUR-GUID2" Win64="yes">
<!-- this will be installed only on a 64-bit System-->
<Condition><![CDATA[Msix64]]></Condition>
<!-- copy 64-bit Dll file...-->
<File Id="blah blah... />
<!-- the following Registry Key will NOT be created inside the WoW6432
<RegistryKey Id="MyShellIconOverlay64" Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\MyIconOverlay64" Action="createAndRemoveOnUninstall">
<RegistryValue Type="string" Value="{GUID...}" />
</RegistryKey>
</Component>
Odniesienia:
Dzięki! Dotarłem aż do ICE80, ale nie zdawałem sobie sprawy, że zadziała, jeśli zostanie zniesione :-) – Cameron
- 1. rejestracja com dll w wix
- 2. Czy istnieje sposób na przyspieszenie kompilacji WiX?
- 3. Pakowanie exe JavaFX dla systemów Windows x86
- 4. Gniazda na tej samej maszynie dla systemów Windows i Linux
- 5. System plików w pamięci dla systemów Windows
- 6. Użyj jednego instalatora NSIS do zainstalowania 32-bitowych plików binarnych w 32-bitowym systemie operacyjnym i 64-bitowych plikach binarnych w 64-bitowym systemie operacyjnym?
- 7. W jaki sposób weryfikujesz interfejsy oparte na kaczkach w pythonie?
- 8. Wix Burn, w jaki sposób zezwolić na obniżenie oceny?
- 9. Rejestracja .NET COM DLL podczas Wix zainstalować
- 10. W jaki sposób konsekwentnie rejestrować dane z moich portów szeregowych?
- 11. Identyfikator GUID wiersza polecenia dla systemów Unix i Windows?
- 12. użyciu com 32 bity biblioteka na 64 bitach aplikacyjnych
- 13. W jaki sposób OSGI i JSF mogą współpracować?
- 14. W jaki sposób zapewnić wstępnie skompilowane moduły cytonowe dla 32 i 64 bitów?
- 15. Jakie są ograniczenia zestawów narzędzi WiX i WiX?
- 16. W jaki sposób użytkownicy mogą oceniać aplikacje na Facebooku?
- 17. W jaki sposób jeden bajt pamięci jest dostępny dla procesora w 32-bitowej pamięci i 32-bitowym procesorze?
- 18. Jak wdrożyć 64-bitowy i 32-bitowy pakiet Instalatora Windows jako pojedynczą konfigurację?
- 19. Wykryj system 64-bitowy z 32-bitowego instalatora WIX
- 20. iis7 Wyzwanie i uwierzytelnianie oparte na przekierowaniu nie mogą być używane jednocześnie
- 21. WiX: Zapobieganie uruchamianiu 32-bitowego instalatora w 64-bitowym systemie Windows
- 22. Jaki jest standardowy sposób obsługi 32-bitowych i 64-bitowych instalacji Pythona obok siebie na komputerze z systemem Windows?
- 23. czy istnieje biblioteka systemów plików trybu użytkownika dla systemu Windows?
- 24. W WiX, czy powinienem mieć różne identyfikatory produktu dla wersji 32- i 64-bitowych
- 25. Grubość Datetime między 32-bitowym i 64-bitowym systemem Windows
- 26. Czy 32-bitowe i 64-bitowe mogą współpracować ze sobą?
- 27. "Oparte na Monadzie" oparte na zdarzeniach IO
- 28. Wieloplatformowa alternatywa dla COM
- 29. W jaki sposób 32-bitowa maszyna oblicza podwójną precyzję numer
- 30. W jaki sposób użytkownicy mogą pobrać bazel-run.sh?
zostały również obserwuje się techniką wymienioną gdzie zarówno 32 jak i 64 wersje dll zależność są zawarte w th zużywanie zespołu. Zanim zespół wykona wywołanie PInvoke, sprawdza, czy biblioteka jest obecna. Jeśli nie, wyodrębnia odpowiednią dołączoną bibliotekę dll. Wydaje się to szalone, ale dla moich celów będzie idealnie działać. W przypadku przyszłych wydań mogę wypróbować tę trasę. – KevM