Installation InstallShield 2010首映式:64位&;32位驱动程序安装

Installation InstallShield 2010首映式:64位&;32位驱动程序安装,installation,windows-installer,driver,installshield,Installation,Windows Installer,Driver,Installshield,我正在使用InstallShield 2010 Premiere 我有一个基本的MSI项目,使用驱动程序向导和DifxApp安装一个应用程序和一个32位驱动程序 我正在尝试添加一个64位驱动程序,如果系统是64位的,它将被安装。但是,当添加此64位驱动程序时,安装(在32位系统上)失败,我在MSI日志中找到的唯一内容是: MSIProcessDrivers返回值3 我甚至没有在64位系统上尝试过 有没有一种方法可以使用一个安装程序文件来实现这一点 编辑: 我注意到问题出在DifxApp.dll上

我正在使用InstallShield 2010 Premiere

我有一个基本的MSI项目,使用驱动程序向导和DifxApp安装一个应用程序和一个32位驱动程序

我正在尝试添加一个64位驱动程序,如果系统是64位的,它将被安装。但是,当添加此64位驱动程序时,安装(在32位系统上)失败,我在MSI日志中找到的唯一内容是:

MSIProcessDrivers返回值3

我甚至没有在64位系统上尝试过

有没有一种方法可以使用一个安装程序文件来实现这一点

编辑: 我注意到问题出在DifxApp.dll上。根据为驱动程序选择的上一个体系结构,installshield仅保存1个dll:如果我有2个驱动程序,并且我将其中一个设置为目标x64,则DifxApp.dll将是x64中的一个,而在选择x32时则相反

我可以手动插入x64和x32 DifxApp.dll,但我无法找到一种方法使Installshield创建的自定义操作有条件地接受x32或x64 dll


有什么想法吗?

您的安装程序似乎缺少组件条件。 您应该在不同的组件中设置x32和x64驱动程序,并通过测试属性有条件地安装每个驱动程序


例如:x64组件的条件是“VersionNT64”,而x32组件的条件是“notversionnt64”。

好吧,由于我无法使用InstallShield向导找到正确的解决方案,我返回到我自己的自定义操作,改为调用DPInst.exe。
每个自定义操作都会根据操作系统的类型有条件地触发。64位自定义操作将调用DPInst.exe 64位版本,32位版本也是如此。

您应该注意,在一般情况下,32位和64位的单一安装程序是不可能的。查看以了解更多信息。

无法在一个安装程序中为x86和x64配置DIFx。必须是两个包,并且在这些包中根据操作系统修改difxapp(a).dll的引用

因此,我的方法是:

  • 1安装包
  • 2个包含对驱动程序引用的发布标志x86和x64(如配置为x86)
  • 使用相关发布标志生成x86包
  • 通过自动化将difx参考文件发送到x64
  • 使用相关发布标志生成x64包
另外,两个软件包必须具有相关的启动条件,才能在其他操作系统上运行它们


托拜厄斯(Tobias)

我最初就是这么做的。但是,Installshield仅保存DifxApp.dll的一个副本(x32或x64)。我需要它使用不同的dll根据我的条件。你的安装程序是未压缩的吗?如果是这样,您需要设置源位置属性-我已经设置了2个不同的源位置。但是DifxApp.dll不是我放在那里的文件,而是InstallShield向导。