2009-12-30 229 views
0

我正在使用InstallShield 2010 Premiere。InstallShield 2010 Premiere:64位和32位驅動程序安裝

我有一個基本的MSI項目,使用驅動程序嚮導和DifxApp安裝應用程序和32位驅動程序。

我想添加一個64位驅動程序,如果系統是64位,將會安裝。然而,這增加的64位驅動程序時,安裝(在32位系統)失敗,並且我在MSI日誌中找到的唯一的事情就是:

MSIProcessDrivers返回值3

我甚至沒有在64位系統上試用它。

有沒有使用單個安裝程序文件完成此操作的方法?

編輯: 我注意到問題是與DifxApp.dll。根據爲驅動程序選擇的LAST體系結構,installshield僅包含1個dll:如果我有2個驅動程序,並將其中一個設置爲目標x64,則DifxApp.dll將是x64中的一個,選擇其他方式時X32。

我可以手動插入x64 & x32 DifxApp.dll,但我找不出一種方法來使Installshield創建的自定義操作有條件地採用x32或x64 dll。

任何想法?

回答

1

好吧,因爲我沒有找到使用InstallShield嚮導的正確解決方案,所以我回到了我自己的自定義操作,它調用了DPInst.exe。 根據操作系統的類型,有條件地觸發每個自定義操作。 64位自定義操作將調用DPInst.exe 64位版本,對於32位也是如此。

0

看來您的安裝程序缺少組件條件。 您應該同時在不同的組件中設置x32 & x64驅動程序,並通過測試VersionNT64屬性有條件地安裝每個驅動程序。

例如:x64組件將具有「VersionNT64」作爲條件,而x32組件將具有「Not VersionNT64」。

+0

這就是我最初所做的。但是,Installshield只保存DifxApp.dll(x32或x64)的單個副本。我需要它根據我的條件使用不同的dll。 – Eldad 2009-12-31 12:46:02

+0

您的安裝程序是否未壓縮?如果是這樣,您需要設置源位置屬性-http://helpnet.flexerasoftware.com/robo/projects/installshield16helplib/IHelpCompSrclocation.htm – KMoraz 2010-01-01 17:20:26

+0

我已經設置了2個不同的源位置。但是DifxApp.dll不是我放在那裏的文件,而是InstallShield Wizard。 – Eldad 2010-01-05 12:39:32

0

您應該注意,在一般情況下,32位和64位的單個安裝程序是不可能的。查詢this瞭解更多信息。

1

在一個安裝程序中,x86和x64的DIFx配置是不可能的。必須是兩個軟件包,並且在這些軟件包中根據操作系統偏好修改difxapp(a).dll的引用。

所以我的做法是:

  • 1安裝包
  • 2釋放標誌x86和含給司機的引用64(例如兩配置爲X86)
  • 構建X86包與相關的發佈標誌
  • mofify通過自動化DIFX引用到x64
  • 構建64封裝,相關的發佈標誌

另外兩個包必須有相關的啓動條件不要在其他OS操作系統上運行它們。

Tobias

相關問題