繁体   English   中英

Visual Studio安装项目:如何强制卸载程序以管理员模式运行?

[英]Visual Studio Setup Project: How Can I force an Uninstaller to run in Administrator mode?

我已经创建了一个Visual Studio安装项目,我为我的主应用程序创建了一个安装程序类。 在此安装程序类中,我重写了卸载程序功能以清除由我的应用程序创建的额外文件夹。 这在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保留为空

希望这有助于某人/

Vista的UAC类似于window 7的,所以你应该在这里找到一些帮助:

http://www.professionalvisualstudio.com/blog/2007/10/05/enabling-your-application-for-uac-on-vista/

此编写详细说明了如何调整您的应用程序以运行而不会遇到UAC问题。

它允许您向解决方案添加清单文件,以确保它以特定级别的特权运行。

我的假设是您创建了一个新的自定义操作,该操作在卸载MSI包时执行。 要在安装或卸载时提升自定义操作,必须将其延迟 ,并且必须使用noimpersonation标记进行标记。

在WiX中,您可以设置CustomAction元素的这些属性:

  • Execute="deferred"
  • Impersonate="no"

就Windows Installer而言,您的自定义操作必须设置这些位: msidbCustomActionTypeInScript + msidbCustomActionTypeNoImpersonate ; 请参阅自定义操作脚本内执行选项

将这些属性添加到卸载过程:

    [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
    public override void Uninstall(IDictionary savedState)
    {
        base.Uninstall(savedState);
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM