我正在使用InstallShield 2010 Premiere。
我有一个基本的MSI项目,使用驱动程序向导和DifxApp安装应用程序和32位驱动程序。
我正在尝试添加一个64位驱动程序,如果系统是64位的话,它将被安装。但是,当添加此64位驱动程序时,安装(在32位系统上)失败,我在MSI日志中发现的唯一问题是:
MSIProcessDrivers返回值3。
我甚至没能在64位系统上试用。
是否有一种使用单个安装程序文件来完成此操作的方法?
编辑:我注意到问题在于DifxApp.dll。根据为驱动程序选择的最后一个体系结构,安装屏蔽只保存一个dll :如果我有两个驱动程序,并且设置其中一个驱动程序为目标x64,则DifxApp.dll将是x64之一,而在选择x32时则相反。
我可以手动插入x64 & x32 DifxApp.dll,但是我想不出如何使Installshield创建的自定义操作有条件地接受x32或x64 dll。
有什么想法吗?
发布于 2010-01-06 08:09:23
由于我未能使用InstallShield向导找到适当的解决方案,所以我回到了自己的自定义操作,即调用DPInst.exe。每个自定义操作都根据操作系统的类型有条件地触发。64位自定义操作将调用DPInst.exe 64位版本,32位也是如此。
发布于 2010-08-27 09:34:09
不可能在一个安装程序中对DIFx和x64进行配置。必须是两个包,并且在这些包中根据操作系统的喜好修改difxapp(a).dll的引用。
所以我的方法是:
另外,这两个包都必须具有相关的启动条件,才不会在另一个OS版本上运行它们。
托拜厄斯
发布于 2009-12-31 09:58:37
您的安装程序似乎缺少组件条件。您应该在不同的组件中设置x32和x64驱动程序,并通过测试VersionNT64属性有条件地安装每个驱动程序。
例如: x64组件将以"VersionNT64“作为条件,而x32组件将具有"Not VersionNT64”。
https://stackoverflow.com/questions/1979173
复制相似问题