2012-10-31 14 views
8

Muszę zainstalować sterownik podczas procesu instalacji w InnoSetup. W tym celu mam dwa pliki instalacyjne: .msi dla 32-bit/64-bit. Teraz w Win7 ten sterownik jest już dołączony, więc nie trzeba go instalować ponownie. Do tej pory zrobiłem to:sprawdź wersję systemu Windows w sekcji [Uruchom] pliku konfiguracyjnego InnoSetup

[Tasks]     
Name: "install_usb"; Description: "Install USB driver"; GroupDescription: "Drivers:"; 

[Files] 
Source: "xy\driver\*"; DestDir: "{tmp}" 

[Run]  
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\driver_32bit.msi"""; StatusMsg: "Installing 32bit USB driver"; Check: not IsWin64(); Tasks: install_usb; Flags: skipifsilent 
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\driver_64bit.msi"""; StatusMsg: "Installing 64bit USB driver"; Check: IsWin64(); Tasks: install_usb; Flags: skipifsilent 

Użytkownik może wybrać, czy chce zainstalować sterownik. Jeśli zdecyduje się to zrobić, prawidłowy sterownik działa. To działa dobrze. Teraz chcę wybrać, aby nie instalować sterownika, jeśli> = Win7 jest uruchomiony. Czytałem o OnlyBelowVersion: 6.1 ale wydaje się być w stanie zrobić coś takiego w sekcji [Run]:

[Run]  
... Check: IsWin64() and OnlyBelowVersion:6.1; ... 

Jak mogę używać OnlyBelowVersion (lub coś podobnego) w sekcji [Run]?

Również chcę, aby upewnić się, że msi prowadzony jest we właściwym trybie (tryb 64bit dla systemów 64-bitowych). Bo myślę, że tak nie jest teraz. Czy można to wymusić? Dowiedziałem się o ArchitecturesInstallIn64BitMode=x64, gdzie muszę to umieścić?

Odpowiedz

10

Parametr OnlyBelowVersion, którego nie można użyć w instrukcji Check, ale jako osobny parametr.

[Run]  
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\driver_32bit.msi"""; OnlyBelowVersion: 6.1; StatusMsg: "Installing 32bit USB driver"; Check: not IsWin64(); Tasks: install_usb; Flags: skipifsilent 
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\driver_64bit.msi"""; OnlyBelowVersion: 6.1; StatusMsg: "Installing 64bit USB driver"; Check: IsWin64(); Tasks: install_usb; Flags: skipifsilent 

do was pytanie drugie, funkcja zwraca True IsWin64 na wszystkich 64-bitowych wersji systemu Windows, więc to, co masz rację. Z odniesienia:

Ta funkcja zawsze zwraca wartość True w wersji x64 systemu Windows.

Aby poprawnie uruchomić instalację InnoSetup w trybie 64-bitowym, należy określić przynajmniej dyrektywę ArchitecturesInstallIn64BitMode. Jeśli określisz tę dyrektywę z co najmniej jedną z dostępnych wartości, twoja instalacja będzie działać w trybie 64-bitowym na komputerach z architekturą określoną przez architekturę, w trybie 32-bitowym, jeśli uruchomisz konfigurację na komputerze z procesorem x86 .

+0

Fajnie, to działa idealnie. Na drugie pytanie: czy tak, to zwraca prawdę w wersji x64, czy gwarantuje również, że pliki wykonywalne i instalator działają w trybie 64-bitowym? – brimborium

+0

Och, myślałem, że chcesz, aby instalator 'driver_64bit.msi' działał w systemach 64-bitowych, a nie instalator InnoSetup. Potem zaktualizuję odpowiedź ... – TLama

+0

Cóż, najważniejszą częścią jest sterownik. Ale jeśli nie jest trudno dołączyć sam instalator w tym stanie, to dobrze. – brimborium

Powiązane problemy