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安装应用程序属性,但没有适当的文档,(或示例/教程)。 以下是我为解决此问题所采取的步骤:

  1. 用Orca打开appInstal.msi。
  2. 从左表中单击customAction
  3. 在所有行的末尾添加一个新条目(通过双击一个新行)
  4. 键入Elevate_Install_Uninstall for Action名称,输入3072表示类型
  5. 为目标键入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); }