2009-12-30 171 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

相关问题