Installshield 2013 Installscript MSI:修复期间错误的.msi位置

时间:2018-06-28 09:13:37

标签: installshield

我有一个非常简单的installscript MSI项目-它可以将一些文件复制到一个文件夹中,更新一些注册表项,就可以了。

当我尝试使用“修复”功能(通过重新启动安装程序,或通过选择“应用程序和功能”下的应用程序的“修改”选项)时,进入“复制新文件”阶段时,我收到以下消息:

  

“您要使用的功能位于不可用的网络资源上。

     

单击“确定”重试,​​或在下面的框中输入包含安装包'project.msi'的文件夹的备用路径。“

查找.msi文件的路径为%TEMP%\[SOME_RANDOM_HEXADECIMAL_STRING]

这个随机的十六进制字符串似乎与项目没有特别的关系。它既不是产品代码,也不是升级代码,也不是包装代码。

当我在注册表中查找它时,可以在以下项的值中找到它:

Computer\HKEY_CLASSES_ROOT\Installer\Products\[SCRAMBLED_PRODUCT_CODE]\SourceList\LastUsedSource
Computer\HKEY_CLASSES_ROOT\Installer\Products\[SCRAMBLED_PRODUCT_CODE]\SourceList\Net\3
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\[ANOTHER_SCRAMBLED_PRODUCT_CODE]\SourceList\LastUsedSource
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\[ANOTHER_SCRAMBLED_PRODUCT_CODE]\SourceList\Net\3

%TEMP%文件夹中,我可以在一个文件夹中找到.msi文件,该文件夹具有另一个随机十六进制字符串作为其名称。该文件夹根本不会出现在注册表中。

我不希望我的客户每次想要修复我的产品的安装时都去寻找.msi文件。如何让安装程序知道.msi文件的位置?

1 个答案:

答案 0 :(得分:1)

由于临时文件夹已被清除(安装最初从中运行),因此从中安装的源文件可能会丢失。

曾经有一个cache the whole MSI - feature可以在release-configuration basisCache MSI Locally)上启用。我相信caching the whole MSI in a safe location会“解决”这个问题(请参阅第3节)。尽管使用了更多的磁盘空间,但许多人还是这样做。

另一种选择是从administrative installation安装(本质上是安装文件的摘录-通过setup.exe /amsiexec.exe /a MySetup.msi运行-已在网络共享上提供,始终可用)用于维修或修改操作)。这就是公司部署用于支持修复和修改操作的东西。