我有一个使用 InstallScript MSI 项目类型创建的设置。我们的客户遇到了这个问题,他想要一个快速的解决方案。
假设我已经从
这样的路径启动了安装C:\Setup_V_1.0.0931.1
在此文件夹中,我有Setup.exe,我将通过它安装产品。安装完成后或经过几天后,我会将路径更改为:
C:\New\Setup_V_1.0.0931.1
这次我要修改设置。实际上我们支持3个功能:服务器,客户端和服务。
这次我只想要Client而不是Server。因此,我将单击Setup.exe或单击启动菜单中的卸载图标,这将导致维护模式,您可以选择修改,修复或删除。我选择修改并选择该功能,但随着安装的进行,将弹出以下错误消息:
安装程序无法在指定的路径或磁盘上找到文件。请检查 插入正确的磁盘或指定新路径。无法 找到文件c:\ New \ Setup_V_1.0.0931.1 \ setup.msi
然后,将显示另一个弹出窗口:
错误:1706。无法找到产品的有效来源。 Windows 安装程序无法继续。
下一条错误消息是:
错误:1603。安装过程中出现致命错误。咨询Windows Installer 帮助(Msi.chm)或MSDN获取更多信息。
但是,如果我将路径更改为其原始位置,则可以正常工作。
我该如何解决这个问题?
我在此注册表路径中检查了事件:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\{Product-Key}
此密钥包含InstallProperties内的大量信息。有一个名为InstallSource的密钥,其值为C:\Setup_V_1.0.3909.1\
。即使在更改此值后,installshiled仍然显示错误。
我找到了卸载信息的相同注册表信息:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{Product-Key}
答案 0 :(得分:0)
在你的属性中,从omus到vomus更改ReinstallMode(或者可能重新安装,我忘记了哪些)
v表示缓存您的安装,因此它会将您的.msi文件放在c:\ windows \ installer中,以便以后使用。
答案 1 :(得分:0)
安装MSI时,Windows Installer会将原始MSI路径保存在注册表中(您提到的InstallSource条目)。在维护模式下运行MSI时,Windows Installer将使用此路径查找安装数据(CAB文件)。
移动MSI时,存储在注册表中的路径不再有效,因此Windows Installer无法找到安装数据。
可能的解决方案是使用“控制面板”中的“添加或删除程序”或“程序和功能”来修改安装。这样就可以使用缓存的MSI。