VS2010 安装项目在程序卸载时运行 .exe 或 C# 代码

Posted

技术标签:

【中文标题】VS2010 安装项目在程序卸载时运行 .exe 或 C# 代码【英文标题】:VS2010 Setup Project run .exe or C# code on program unistall 【发布时间】:2014-07-15 03:59:52 【问题描述】:

我正在开发 Visual Studio 2010。我开发了一个 WPF C# 应用程序,该应用程序将通过网站部署给客户。下载并安装后,他们必须注册应用程序,该应用程序将向服务器发送信息并写入一些注册表项。 我创建了一个安装项目,以便为我的应用程序创建安装程序包。它可以正确安装并在控制面板/添加删除程序中自动注册该应用程序,如果用户希望有一天卸载该程序,这非常好。

问题:如何强制卸载程序执行一些代码或启动另一个应用程序,以便向网站发送当前用户正在停用和卸载程序的信息?

问题:如果用户现在卸载程序,只删除文件,最终删除注册表值,但网站会继续认为用户仍然有一个活跃的软件的副本,如果他想再次下载,网站不会让他这样做。

【问题讨论】:

【参考方案1】:

您必须实现安装操作,并在适当的设置事件中运行它们。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Deployment.WindowsInstaller;

namespace CustomAction1

public class CustomActions

    [CustomAction]
    public static ActionResult CustomAction1(Session session)
    
        session.Log("Begin CustomAction1"); // Here you can write your own custom action code
        return ActionResult.Success;
    


选择 CustomAction1.CA.dll 文件并将其添加到您的 Advanced Installer 项目中 转到自定义操作页面,从添加自定义操作选项卡或工具栏添加一个“新安装的自定义操作”,然后选择 CustomAction1.CA.dll 在“自定义操作属性”视图的“函数名称”字段中,选择 CustomAction1 构建项目并测试它

http://www.advancedinstaller.com/user-guide/qa-c-sharp-ca.html

【讨论】:

一切都很好,除了一件事:当卸载程序启动时,它会在我的安装目录中创建一个临时文件夹“Uninstall.CA.dll-”。它在那里解压自定义操作 dll,但在卸载完成后,目录保持为空且未被删除。【参考方案2】:

如果您的安装项目是 Visual Studio 安装项目,那么基本上您只需添加一个自定义操作用于安装和一个用于卸载。这是旧的但仍然相关 - 您可以安排在安装结束和卸载时运行程序:

Getting Stsrted with Setup Projects

【讨论】:

以上是关于VS2010 安装项目在程序卸载时运行 .exe 或 C# 代码的主要内容,如果未能解决你的问题,请参考以下文章

2010.2.1 制作安装程序步骤

vs2010安装失败 怎么办啊 ???

如何生成能在没有安装opencv库及vs2010环境的电脑上运行的exe文件

卸载程序不会将复制的库删除到 VS2010 安装程序项目中的系统文件夹。

VS 2010 安装程序可以将 MCR 作为先决条件吗?

vs2005制作WEB项目安装文件和发布项目的区别