1

(使用 installshield 2013)

我有一个安装软件的安装程序,现在我正在向安装程序添加一个全新的 shinny 设备驱动程序。需要注意的是它(驱动程序)只能安装在 32 位 windows 7 机器上,我们也想利用即插即用的优势,所以它应该在安装后准备就绪。但是考虑到这一点,将软件安装在 Win7-64 位机器上是非常好的。这不是公司外部“官方”支持的场景,但对于内部开发人员来说是必要的。

所以我所做的是添加我的组件并将其标记为 32 位驱动程序。如果我尝试在我的笔记本电脑(win7 64bit)上安装,我会得到 ERROR - You need to use the 64-bit version of DIFXAPP.DLL to install drivers on this machine.Drat!一位同事建议我在VersionNT >= 601 AND NOT VersionNT64 上使用以下条件MSIProcessDriver,这些相同的条件似乎不适用于组件本身,我被告知在这些条件工作的过程中为时已晚。我还必须将这些相同的条件添加到MSICleanUpOnSuccess获得升级以在我的笔记本电脑上工作。我不知道这是否是正确的解决方案,但它对我有用,我可以安装和升级。这就是我的麻烦开始的地方,在实际的硬件平台本身上,我能够安装一次,但我无法升级或安装任何不同版本的安装程序,应用程序本身安装正常,但安装程序总是返回“中断” . 我得到以下

DIFXAPP: ERROR 0x65A creating MsiUninstallDrivers custom action for Win7Drivers
DIFXAPP: RETURN: ProcessDriverPackages() 1626 (0x65A)
CustomAction MsiProcessDrivers returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Action ended 15:04:33: MsiProcessDrivers. Return value 3.
MSI (s) (B8:58) [15:04:33:419]: Machine policy value 'DisableRollback' is 0
MSI (s) (B8:58) [15:04:33:419]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2 
MSI (s) (B8:58) [15:04:33:419]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2 
MSI (s) (B8:58) [15:04:33:419]: Calling SRSetRestorePoint API. dwRestorePtType: 13, dwEventType: 103, llSequenceNumber: 29, szDescription: "".
MSI (s) (B8:58) [15:04:33:419]: The call to SRSetRestorePoint API succeeded. Returned status: 0.
MSI (s) (B8:58) [15:04:33:419]: Unlocking Server
Action ended 15:04:33: INSTALL. Return value 3. 

从我在网上收集的信息来看,这可能是由于安装不当导致该驱动程序的注册表处于错误状态。我已经看到其他人遇到了这个问题,但没有发布任何解决方案。我也不知道该做什么,或者如何让我的测试机器恢复工作状态。我希望你们可以提供帮助,或分享您发现可行的类似场景的策略。

ps 我还尝试将此作为一个单独的功能,并将其标记requiredNO,认为如果它失败(比如在我的笔记本电脑上),这不应该使整个安装程序失败。我不确定如果驱动程序无法安装在我们的硬件平台上,我们的预期行为会是什么,我想失败了?

4

1 回答 1

1

我能够通过使用 Revo 卸载程序解决一些麻烦的注册表设置来解决我的问题,到目前为止一切都很好,而且我不必在此过程中重新映像我的机器。

于 2014-07-02T14:39:29.223 回答