(使用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.
根据我在网上收集的内容,这可能是由于安装错误导致注册表处于此驱动程序的错误状态。我见过其他人遇到过这个问题,没有发布任何决议。我也有点不知所措,或者如何让我的测试机恢复到工作状态。我希望你们可以提供帮助,或者为你发现的类似情况分享策略。
P.S。我也尝试将其作为一个单独的功能,并将required
标记为NO
,如果它失败(如在我的笔记本电脑上),这不应该使整个安装程序失败。如果驱动程序无法安装,我不知道我们的硬件平台上的预期行为是什么,我想失败了?
答案 0 :(得分:0)
我能够解决我的问题,通过使用Revo un-installer来破解一些麻烦的注册表设置,到目前为止一切顺利,我没有必要在此过程中重新映像我的机器。