在 Vista/Win 7 上卸载链式 msi 时出现错误 1730(需要管理员权限)
Posted
技术标签:
【中文标题】在 Vista/Win 7 上卸载链式 msi 时出现错误 1730(需要管理员权限)【英文标题】:Error 1730 (needs admin rights) when uninstalling chained msi on Vista/Win 7 【发布时间】:2012-02-04 03:28:58 【问题描述】:我在 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 也不是一种选择。
我希望你能提供帮助,因为我完全迷失在这个问题上,而且我的谷歌搜索已经产生了任何有用的东西。
【问题讨论】:
您是否使用数字证书签署您的包裹?我不太记得这种行为是什么,但我知道它至少有助于在链接时消除对一些额外 UAC 提示的需要。 不,此时我没有签署我的包裹。我可以尝试一下,看看它是否能解决问题。感谢您的建议。 您是否设置了 MSIDEPLOYMENTCOMPLIANT 属性? 嗯,这看起来很有趣.. 我不知道那个属性。我会在这个星期一试一试。谢谢:) Christopher 的意思可能是,设置该属性可能导致不出现 UAC,因此可能是此处失败的原因。如果在摘要信息中设置 UAC 标志,则相同。这意味着此设置/标志通常与您作为新用户所理解或想要的相反。 【参考方案1】:实际上,解决方案很简单,但不是非常面向用户。在安装和卸载过程中会出现新的 /qb 对话窗口。 对于链式 MSI,您必须将安装用户界面从 无 (/qn) 更改为 基本 (/qb),因为主 MSI 不会将管理员权限传递给拥有的链式 MSI ,并且在启用 UAC 的隐藏模式下会导致错误。 另外我可以推荐参考 White Papers for chained MSI here,它描述了很多细节。
【讨论】:
【参考方案2】:我无法直接解决“卸载链接安装程序”问题,因为我自己不使用链接。我知道很多人对链式技术有问题,而且我知道没有任何人对此感到真正满意的例子。
所以对我来说,编写防弹设置并不是一项经过验证的技术。如果您使用引导程序或编写自己的 setup.exe,它会按顺序安装所有 msi 文件,您可以完全控制。根据您的完美要求,它可能会花费大量精力,但是“一堆”安装和卸载应该不是那么困难。 我没有使用 WiX 的“刻录”,但我知道它存在。也许其他人知道这里是否值得推荐。
至少尝试使用引导程序进行卸载。您现有的或新的:只是一个小的 .exe,您将其放在注册表中 ARP 下的“卸载”条目下。它只需连续调用所有 MSI 卸载。可以是五线。
没有链式那么漂亮,但已经为其他数千人工作了多年 :-) 好老的工作技术。
【讨论】:
以上是关于在 Vista/Win 7 上卸载链式 msi 时出现错误 1730(需要管理员权限)的主要内容,如果未能解决你的问题,请参考以下文章