【问题标题】:InstallShield 2010 Premiere: 64 bit & 32 bit driver installationInstallShield 2010 Premiere:64 位和 32 位驱动程序安装
【发布时间】:2009-12-30 09:04:02
【问题描述】:

我正在使用 InstallShield 2010 Premiere。

我有一个基本的 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。

有什么想法吗?

【问题讨论】:

    标签: installation windows-installer driver installshield


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      所以我的做法是:

      • 1个安装包
      • 2 个发布标志 x86 和 x64 包含对驱动程序的引用(例如都配置为 x86)
      • 使用相关的发布标志构建 x86 包
      • 自动修改对 x64 的 diffx 引用
      • 使用相关的发布标志构建 x64 包

      此外,两个软件包都必须具有相关的启动条件,才能在其他操作系统上运行它们。

      托比亚斯

      【讨论】:

        【解决方案3】:

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

        例如:x64 组件将具有“VersionNT64”作为条件,而 x32 组件将具有“Not VersionNT64”。

        【讨论】:

        • 这就是我最初所做的。但是,Installshield 仅保存 DifxApp.dll(x32 或 x64)的单个副本。我需要它根据我的情况使用不同的dll。
        • 您的安装程序是否未压缩?如果是这样,您需要设置源位置属性 -helpnet.flexerasoftware.com/robo/projects/…
        • 我已经设置了 2 个不同的源位置。但是DifxApp.dll不是我放在那里的文件,而是InstallShield Wizard。
        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2011-09-03
          • 1970-01-01
          • 1970-01-01
          • 2011-10-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多