关于 windows 安装程序:在 Vista/Win 7 上卸载链式 msi 时出现错误 1730(需要管理员权限)

Error 1730 (needs admin rights) when uninstalling chained msi on Vista/Win 7

我在 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 也不是一种选择。

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


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


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

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

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

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