自定义visual studio 安装类
当我们使用Visual Studio自带的Setup Project来生成安装包时,我们可以很方便的将项目的输出部署到目标机器。然而在程序的运行过程中,可能创建了一些文件或者目录,而这些文件和目录在程序卸载的时候,这些文件将不会被删出,这无疑将造成用户信息的泄露。
Visual Studio中为我们提供了一种叫做Custom Action的机制,它能够在Install, uninstall, repair, commit期间定义用户自己的操作。例如在安装自后打开某个网页等都能用Custom Action来实现。而本文所要阐述的是,怎样使用Custom Action在程序卸载期间,删除特定的文件。
Custom Action的原理是在用户需要的时候执行某个可执行文件或者可执行脚本,它所支持的文件类型有exe, dll, vbs等。而使用可执行脚本执行相应操作有较多的局限性,不能详细定义脚本执行的具体时刻。本文主要着眼于dll类型的custom Action。
下图中我们可以看到,这是一个名为TestApplication的项目以及他的部署安装项目TestApplicationSetup:
我们在TestApplication中添加一个installer(安装程序类),Installer默认继承System.Configuration.Install.Installer,而这个类中提供了一系列接口
当我们使用Visual Studio自带的Setup Project来生成安装包时,我们可以很方便的将项目的输出部署到目标机器。然而在程序的运行过程中,可能创建了一些文件或者目录,而这些文件和目录在程序卸载的时候,这些文件将不会被删出,这无疑将造成用户信息的泄露。
Visual Studio中为我们提供了一种叫做Custom Action的机制,它能够在Install, uninstall, repair, commit期间定义用户自己的操作。例如在安装自后打开某个网页等都能用Custom Action来实现。而本文所要阐述的是,怎样使用Custom Action在程序卸载期间,删除特定的文件。
Custom Action的原理是在用户需要的时候执行某个可执行文件或者可执行脚本,它所支持的文件类型有exe, dll, vbs等。而使用可执行脚本执行相应操作有较多的局限性,不能详细定义脚本执行的具体时刻。本文主要着眼于dll类型的custom Action。
下图中我们可以看到,这是一个名为TestApplication的项目以及他的部署安装项目TestApplicationSetup:
我们在TestApplication中添加一个installer(安装程序类),Installer默认继承System.Configuration.Install.Installer,而这个类中提供了一系列接口
用户可以更具自己的需要选择具体实现那个接口,在这里我们选择实现Uninstall接口,下面是installer的具体代码:
之后我们需要在Setup Project中新建custom action,因为我们需要在uninstall的时候做以上这些操作,我们需要在uninstall节点下添加新的custom action,并在弹出的窗口中选择主项目的输出:
网上也有些大神说需要重新建立一个项目,在新建的项目中建立这样一个installer,并将这个项目的Primary Output添加到Setup Project的输出中。其实没有必要,完全可以在主项目中添加installer,经过测试这样完全能够实现在安装或卸载期间自定义操作的需求。
测试环境:VS2010/VS2008 .NET Framework 2.0
用户可以更具自己的需要选择具体实现那个接口,在这里我们选择实现Uninstall接口,下面是installer的具体代码:
之后我们需要在Setup Project中新建custom action,因为我们需要在uninstall的时候做以上这些操作,我们需要在uninstall节点下添加新的custom action,并在弹出的窗口中选择主项目的输出:
网上也有些大神说需要重新建立一个项目,在新建的项目中建立这样一个installer,并将这个项目的Primary Output添加到Setup Project的输出中。其实没有必要,完全可以在主项目中添加installer,经过测试这样完全能够实现在安装或卸载期间自定义操作的需求。
测试环境:VS2010/VS2008 .NET Framework 2.0