Visual Studio安装项目:如何强制卸载程序以管理员模式运行?
我已经创建了一个Visual Studio安装项目,我为我的主应用程序创建了一个安装程序类。 在此安装程序类中,我重写了卸载程序function以清除我的应用程序创建的额外文件夹。 这在Windows XP中运行良好,但在Windows 7中没有,因为我认为它与UAC有关。 如何强制卸载程序提升权限?
我在另一篇文章中提到了这个问题,但我并不清楚我的意图。
我找到了这些链接,但我不知道它是否相关:
http://msdn.microsoft.com/en-us/library/aa370852.aspx
http://msdn.microsoft.com/en-us/library/aa370134%28v=VS.85%29.aspx
更新(11/7/2011)
我发现了Orca ,它可用于修改msi安装应用程序属性,但没有适当的文档,(或示例/教程)。 以下是我为解决此问题所采取的步骤:
- 用Orca打开appInstal.msi。
- 从左表中单击customAction
- 在所有行的末尾添加一个新条目(通过双击一个新行)
- 键入Elevate_Install_Uninstall for Action名称,输入3072表示类型
- 为目标键入ALL并将Source保留为空
希望这有助于某人/
我的假设是您创建了一个新的自定义操作,该操作在卸载MSI包时执行。 要在安装或卸载时提升自定义操作,必须延迟它,并且必须使用noimpersonation标记进行标记。
在WiX中,您可以设置CustomAction
元素的这些属性:
-
Execute="deferred"
和 -
Impersonate="no"
。
就Windows Installer而言,您的自定义操作必须设置这些位: msidbCustomActionTypeInScript
+ msidbCustomActionTypeNoImpersonate
; 请参阅自定义操作脚本内执行选项 。
Vista的UAC与window 7的类似,所以你应该在这里找到一些帮助:
http://www.professionalvisualstudio.com/blog/2007/10/05/enabling-your-application-for-uac-on-vista/
此编写详细说明了如何调整您的应用程序以便运行而不会遇到UAC问题。
它允许您向解决方案添加清单文件,以确保它以特定级别的特权运行。
将这些属性添加到卸载过程:
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] public override void Uninstall(IDictionary savedState) { base.Uninstall(savedState); }