2010-11-08 65 views
4

我有一個安裝程序(Visual Studio安裝項目),其中uses DIFxApp and an Orca transform to install drivers。問題是有兩個DIFxApp合併模塊 - 一個用於x86,另一個用於x64。如果我引用它們,則安裝只適用於64位機器,而僅引用x86版本允許我在32位機器上安裝。安裝程序選擇基於CPU架構的MSI(x86 32位,64位64位等)

看起來好像唯一的解決方案是創建兩個MSI(一個用於x86,一個用於x64),每個引用正確的合併模塊。我的問題是,我應該如何創建一個安裝程序,根據目標機器的處理器來選擇安裝哪個MSI?

我已經與NSIS有點合作,所以它可能是最簡單的去那條路線。其他可能性是Inno-SetupdotNetInstaller

類似的問題(但答案不足):

+0

爲什麼不讓用戶選擇正確的MSI?在Windows世界中,爲32位和64位版本分開安裝是非常常見的。 – 2010-11-08 21:14:17

+0

@ 0xA3:因爲客戶需要一個統一的安裝程序。此外,我覺得最好自動化所有可能的事情,以便用戶儘可能少地安裝。 – Pat 2010-11-08 21:18:27

回答

0

如何製作一個小程序(發射器),其檢測操作系統類型(64 0R 32位,應該很容易) 。小程序根據檢測結果啓動正確的安裝程序。該程序不應該有任何窗口,並具有與安裝程序相同的圖標。給客戶所有三個文件,installer.exe(程序),inst32.msi和inst64.msi。如果這對客戶來說太多了,那麼只需將它們壓縮到自動解壓縮zip文件,即可自動啓動installer.exe。

+0

是的,這是一個有效的解決方案,但這是一個已被其他人解決的問題,我寧可不要重新發明輪子。 – Pat 2010-11-08 22:56:05

+0

在這種情況下,我建議使用inno setup,非常容易使用http://www.jrsoftware.org/isinfo.php。就我個人而言,我認爲inno setup比nsis更容易。 – arifwn 2010-11-08 23:05:16

+0

我已安裝並正在查看IS。我願意嘗試,但我不知道從哪裏開始。對我的原始問題的一個很好的答案將明確地通過選擇基於CPU的文件或另一個文件。 – Pat 2010-11-08 23:07:35

19

如果你決定去與NSIS:

!include "x64.nsh" 
${If} ${RunningX64} 
    MessageBox MB_OK "running on x64" 
${Else} 
    MessageBox MB_OK "running on x86" 
${EndIf}