3

我在 Installshield 2012 中使用基本 MSI 创建了安装。

我正在使用链式 MSI 技术(在 Windows 安装程序 4.5 及更高版本中受支持)。

我的安装结构包含一个 Main-MSI(在 Setup.exe 中)和几个较小的 MSI 包,它们链接到主 MSI。

在 XP 上,它就像一个魅力。我可以很好地安装它,当我想卸载它时,我只需选择卸载 Main-MSI,它会自动删除所有链接的 MSI。

但是,在 Vista 和 Windows 7 上,我在卸载时遇到了用户权限问题。

当我选择卸载主 MSI 时,它只是在没有进一步通知的情况下被击落。检查 MSI 日志文件,当它尝试卸载第一个链接的 MSI 时,我可以看到以下内容:

错误 1730。您必须是管理员才能删除此应用程序。要删除此应用程序,您可以以管理员身份登录,或联系您的技术支持小组寻求帮助。

我想,由于调用链接 MSI 上的卸载字符串的是 Main-MSI,因此提升权限不会发生这种情况(即使我已将 Setup.exe 设置为需要管理员权限 - 这也是一项要求) .

所以我现在的问题是 - 有什么办法可以解决这个问题 - InstallShield 的隐藏角落中是否有一些标志需要设置才能使其正常工作?

现在的临时解决方法是手动卸载每个链接的 MSI 包,然后最后卸载主 MSI,但这不是一个可靠的解决方案。禁用 UAC 也不是一种选择。

我希望你能帮忙,因为我完全迷失在这个问题上,而且我的谷歌搜索已经产生了任何有用的东西。

4

2 回答 2

1

实际上,解决方案很简单,但不是非常面向用户。在安装和卸载期间会出现新的 /qb 对话窗口。
对于链接的 MSI,您必须将安装用户界面从无(/qn) 更改为基本(/qb),因为主 MSI 不会将管理员权限传递给自己的链接 MSI,并且在启用 UAC 的隐藏模式下会导致错误。我也可以在这里
推荐链式 MSI 的白皮书,它描述了很多细节。

于 2014-04-22T09:26:58.890 回答
0

我无法直接解决“卸载链接安装程序”问题,因为我自己不使用链接。我知道很多人对链式技术有问题,而且我知道没有任何人对此感到真正满意的例子。

所以对我来说,它不是一种经过验证的编写防弹设置的技术。如果您使用引导程序或编写自己的 setup.exe,它会按顺序安装所有 msi 文件,您可以完全控制。根据您的完美要求,它可能会花费大量精力,但是“一堆”安装和卸载应该不那么困难。我没有使用 WiX 的“刻录”,但我知道它存在。也许其他人知道是否要在这里推荐。

至少尝试使用引导程序进行卸载。您现有的或新的:只是一个小的 .exe,您将其放在注册表中 ARP 下的“卸载”条目下。它只需连续调用所有 MSI 卸载。可以是五线。

不像链式那么漂亮,但已经为其他数千人工作了多年 :-) 好老的工作技术。

于 2013-08-09T13:20:31.977 回答