我在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包,然后最终卸载main-MSI,但这不是一个可靠的解决方案。禁用UAC也不是一种选择。
我希望你能帮忙,因为我在这个问题上完全迷失了,而且我的谷歌搜索天堂产生了任何有用的东西。
答案 0 :(得分:1)
实际上,解决方案很简单,但不是非常面向用户。在安装和卸载过程中会出现新的/ qb对话框窗口
您必须将链接MSI的安装用户界面从无(/ qn)更改为基本(/ qb),因为主MSI不会将管理员权限传递给自己链接的MSI,它会在启用UAC的隐藏模式下导致错误。
此外,我可以推荐参考链接MSI here的白皮书,它描述了很多细微的时刻。
答案 1 :(得分:0)
我不能直接为“卸载链式安装程序”问题,因为我不使用链接自己。我知道有很多人在使用链接技术时遇到问题,而且我不知道有人真的对此感到满意。
所以对我来说,它不是一种经过验证的技术来编写防弹设置。如果您使用引导过滤器或编写自己的setup.exe,它将按顺序安装所有msi文件,您可以完全控制。根据您的完美要求,它可能需要花费很多精力,但“束”安装和卸载应该不是那么困难。 我没有使用过WiX的“刻录”,但我知道它存在。也许其他人知道是否在这里推荐。
至少尝试使用引导过滤器进行卸载。您现有的一个或一个新的:只是一个小的.exe,你放在ARP下的注册表中的“卸载”条目下。它只需要连续调用所有MSI卸载。可以是五个班轮。
不像链条那么漂亮,但已为其他千人工作多年:-)好老工作技术。