2013-09-05 5 views
11

Moja aplikacja jest zbudowana przy użyciu konfiguracji "". Instalator WIX dla aplikacji jest zbudowany z platform=x86, więc wynikowy MSI jest 32-bitowy.Co za szkoda zainstalować program "AnyCPU" w 64-bitowym systemie Windows przy użyciu 32-bitowego pliku MSI?

Po uruchomieniu 32-bitowego pliku MSI w 64-bitowym systemie Windows. Właściwość [ProgramFilesFolder] została przekształcona w "C: \ Program Files (x86)", a ścieżki rejestru są przekształcane na Wow6432Node. Po uruchomieniu aplikacji proces jest 64-bitowy - zgodnie z oczekiwaniami.

O ile rozumiem po przeczytaniu wielu powiązanych wpisów na SO. W 64-bitowym systemie Windows, aby [ProgramFilesFolder] rozwiązać na "C: \ Program Files" i ścieżkę do rejestru do normalnej ścieżki (nie pod Wow6432Node). Potrzebuję oddzielnego 64-bitowego pliku MSI. Które staram się uniknąć - Dla mnie, aby mieć oddzielne 64-bitowe MSI tylko dla [ProgramFilesFolder] i ścieżka regsitry, aby rozwiązać do prawidłowej lokalizacji nie jest warto. Dopóki mój program nadal działa 64-bitowo w 64-bitowym systemie Windows, nie obchodzi mnie to, że jest zainstalowany domyślnie w "C: \ Program Files (x86)", a niektóre wartości rejestru istnieją pod adresem Wow6432Node.

Moje pytanie brzmi, czy istnieją inne konsekwencje, gdy instaluję program "AnyCPU" w 64-bitowym systemie Windows przy użyciu 32-bitowego pliku MSI, poza tym, że domyślnie installDir to "C: \ Program Files (x86) "i niektóre wartości rejestru są przechowywane pod numerem Wow6432Node?

+1

Czy dbasz o to, aby wszelkie ustawienia rejestru przechowywane w węźle Wow6432Node były odczytywane przez program zamiast macierzystej lokalizacji (jeśli w ogóle czytasz je)? –

+0

Dlaczego nie zbudować obu, a wersja 32-bitowa wykryje 64-bitowy system operacyjny, a następnie uruchomić plik Setup64.exe i zakończyć działanie, jeśli ma wartość true? –

+0

@Scott Chamberlin, ja tylko instaluję jedną wartość do rejestru. Wymuszenie odczytu kodu C# z Wow6432Node podczas pracy w wersji 64-bitowej jest łatwiejsze niż wykonanie innego instalatora. – sean717

Odpowiedz

2

Jedyną poważną szkodą, która może wystąpić, jest próba odczytania wartości zapisanych w 32-bitowym widoku rejestru. Oczywiście nie uda się ich znaleźć podczas pracy w trybie 64-bitowym. Jeśli tak się stanie, możesz po prostu użyć wyliczenia RegistryView, aby wymusić odczyt z widoku 32-bitowego. Ale domyślam się, że wspomniane ustawienia rejestru są powiązane z instalatorem.

W rzeczywistości scenariusz, który opisujesz, to sposób wdrażania aplikacji. Ponieważ wdrażam zarówno wersje 32-, jak i 64-bitowe na tym samym komputerze, a ponieważ udostępniają niektóre pliki, instaluję wszystko w 32-bitowych plikach programu. A następnie cały dostęp do rejestru jest do widoku 32-bitowego. Tak naprawdę nie ma alternatywy, jeśli chcesz, aby wersje 32- i 64-bitowe dzieliły te same wartości w przekierowanych częściach rejestru.

Powiązane problemy