【问题标题】:Including MSI files in my own installer: Where to put the MSI?在我自己的安装程序中包含 MSI 文件:将 MSI 放在哪里?
【发布时间】: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 的缓存版本,但它会删除所有文件,因此仍然只能进行简单的卸载。

【问题讨论】:

    标签: windows-installer nsis


    【解决方案1】:

    Windows / Windows Instaler 的最新版本(我认为是 Win7 / 8)不再剥离 MSI 以保留验证码签名。此外,并非所有安装程序都需要卸载其 MSI。通常错误地使用 ResolveSource 操作的错误创作。

    主要是将 MSI 放在非 priv 用户可以读取但无法修改的位置。 [CommonAppDataFolder]\Downloaded Installation\Company\Product\Rev 通常是 Rev 是 PackageCode guid 的好地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      • 2013-04-11
      相关资源
      最近更新 更多