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# 代码的主要内容,如果未能解决你的问题,请参考以下文章
如何生成能在没有安装opencv库及vs2010环境的电脑上运行的exe文件