【发布时间】:2013-09-05 10:28:33
【问题描述】:
我正在开发一个安装程序(用 NSIS 脚本编写),我想包含一个第三方 MSI 文件,这是我的应用程序的先决条件。
使用msiexec.exe /i somelibrary.msi 安装 MSI 文件非常容易,但这只能在第一次正常工作。我发现这与 Windows Installer 在注册表中保存的源位置有关。
我阅读了一些关于 MSI 源位置的帖子,例如:
Why does MSI require the original .msi file to proceed with an uninstall?
问题是:我应该把原始的SomeLibrary.msi 文件放在哪里,以便将来进行修复或重新安装操作?
如果我将文件放在我的应用程序目标位置(例如C:\Program Files\...),它将被我的应用程序卸载程序删除。
在另一个目录中尝试重新安装然后导致A network error occurred while attempting to read from the file C:\Program Files\...\SomeLibrary.msi,这是可以理解的,因为原始源 MSI 文件已在卸载过程中被删除。
我知道 Windows Installer 会创建一个 MSI 的缓存版本,但它会删除所有文件,因此仍然只能进行简单的卸载。
【问题讨论】: