5

Używam instalatora VS2008 (plus niestandardowa akcja Orca) do utworzenia instalatora dla mojego produktu .NET.W jaki sposób mogę zainstalować instalator x64 na moim VS2008 x86?

Niedawno dowiedziałem się, że jeden z zewnętrznych zestawów, z których korzystałem, jest specyficzny dla x86 (ponieważ zawiera trochę natywnego kodu); w ten sposób klienci x64 zaczęli awarie podczas uruchamiania z błędami dotyczącymi montażu, które nie są odpowiednie dla ich platformy.

Wysłałem temu klientowi kopię wersji x64 tego zewnętrznego zespołu i poprosiłem o skopiowanie go na istniejącą wersję x86. To działało, słodko! Teraz muszę po prostu zrobić, żeby instalator zrobił to za mnie.

To naprawdę wydaje się nietrywialne :(Idealnie, ja po prostu chcę, aby instalator (który byłby x86, ponieważ może działać na obu platformach), aby dołączyć zarówno wersje x86 i x64 tego niezależnego zespołu i zainstalować Innymi słowy, chcę jednego instalatora, który ułatwi życie moim użytkownikom

Pomyślałem, że to się udało, używając instrukcji warunkowych MSI i tak dalej, ale najwyraźniej nie ... projekty konfiguracji VS2008 nie skompiluje się, dopóki nie podasz "x86" lub "x64." Jeśli podasz x86, to pojawi się błąd kompilacji mówiąc, że nie może zawierać zespołu x64. Jeśli podasz x64, wynik nie może zostać wykonany na komputerze x86 Cholera!

Ktoś musiał wcześniej mieć ten problem. Niestety Google nie jest pomocny, więc zwracam się do StackOverflow!

Odpowiedz

3

Jeśli dobrze Cię rozumiem, chcesz zrobić kopię jednego pliku, jeśli instalujesz na x86 i innym pliku (o tej samej nazwie), jeśli instalujesz na platformie x64.

Po pierwsze, nie można utworzyć jednego MSI dla 2 różnych platform, ponieważ MSI x64 po prostu nie będzie działać na platformie x86, a MSI x86 zostanie zainstalowane przy użyciu WOW64 na platformie x64. Z drugiej strony można utworzyć jeden MSI x86 zawierający 2 różne wersje pliku i selektywnie skopiować odpowiedni plik podczas instalacji.

Najprostszym sposobem jest użycie WIX (V3) zamiast wbudowanego generatora MSI VS2008.WIX daje o wiele większą kontrolę nad tym, co zostanie zainstalowane na komputerze klienta i gdzie, możliwość generowania różnych instalatorów dla różnych platform i pełne wsparcie MSBuild jako dodatkowy bonus. (Aby uzyskać więcej informacji, zobacz: http://wix.sourceforge.net).

W przypadku, gdy zastanawiasz się, że WIX jest nadal w wersji Beta, wygenerowane pliki MSI są całkowicie w porządku i nigdy nie wpadłem na błąd. (I rozwijam projekty konfiguracyjne na życie.)

Wreszcie, możesz sprawdzić za pomocą właściwości VersionNT64, jeśli instalator x86 działa na platformie x64. Jeśli ta właściwość jest obecna, używasz x64, w przeciwnym razie używasz x86.

Mam nadzieję, że to pomoże.

+0

Dziękuję; to jest najlepsze rozwiązanie, jak sądzę. Kiedy mówisz "MSI x86 zostanie zainstalowany przy użyciu WOW64 na platformie x64", czy to oznaczałoby, że moja aplikacja zostanie WOW64'owana? I przypuszczam, że to jest złe. Więc na koniec mogę mieć jakiś boostrapper do wyboru między MSI? – Domenic

+0

"Czy to oznaczałoby, że moja aplikacja zostanie WOW64'ed?" - Tak, to by to dokładnie oznaczało. Twoja aplikacja będzie działać jako proces 32-bitowy na 64-bitowym komputerze, ponieważ jest zainstalowany w folderze "Program files (x86)". Program ładujący x86 jest rzeczywiście rozwiązaniem, za pomocą którego można selektywnie uruchomić odpowiedni MSI. –

6

Kiedy zagłębiłem się w to rok temu, doszedłem do wniosku, że nie było to możliwe. Warto zauważyć, że wiele dostarczonych przez Microsoft plików MSI ma osobne smaki x86 i x64 - i prawdopodobnie dostarczą tylko jeden plik, o ile to możliwe.

1

Osiągnąłem pewien sukces, wykorzystując dwie funkcje do selektywnego dołączania dwóch zestawów plików (w oddzielnych komponentach oczywiście ze swoimi zindywidualizowanymi identyfikatorami plików!).

Instalacja musi być oznaczona jako x32, aby zainstalować na x32 i x64. Zawsze będzie instalowany w katalogach x32 i będzie w dużej mierze traktowany jako aplikacja 32-bitowa działająca pod WOW.

Za pomocą właściwości VersionNT64 można ustalić, czy jest obecna instalacja systemu Windows 64, i warunkowo zainstalować potrzebne pliki.

Nie jestem pewien, jaka część tej funkcjonalności jest dostępna w projektach instalacji VS2008 - używam innych komercyjnych narzędzi do skonfigurowania instalatora w ten sposób. Oczywiście możesz użyć Orca, aby to zrobić, choć nie było to proste, aby go obsługiwać z komercyjnymi narzędziami, a Orca jest znacznie trudniejsza.

Powiązane problemy