zoukankan      html  css  js  c++  java
  • 自定义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,而这个类中提供了一系列接口

    View Code

           用户可以更具自己的需要选择具体实现那个接口,在这里我们选择实现Uninstall接口,下面是installer的具体代码:

    View Code

           之后我们需要在Setup Project中新建custom action,因为我们需要在uninstall的时候做以上这些操作,我们需要在uninstall节点下添加新的custom action,并在弹出的窗口中选择主项目的输出:

    TM截图未命名

           网上也有些大神说需要重新建立一个项目,在新建的项目中建立这样一个installer,并将这个项目的Primary Output添加到Setup Project的输出中。其实没有必要,完全可以在主项目中添加installer,经过测试这样完全能够实现在安装或卸载期间自定义操作的需求。

          测试环境:VS2010/VS2008 .NET Framework 2.0


           用户可以更具自己的需要选择具体实现那个接口,在这里我们选择实现Uninstall接口,下面是installer的具体代码:



           之后我们需要在Setup Project中新建custom action,因为我们需要在uninstall的时候做以上这些操作,我们需要在uninstall节点下添加新的custom action,并在弹出的窗口中选择主项目的输出:

    TM截图未命名

           网上也有些大神说需要重新建立一个项目,在新建的项目中建立这样一个installer,并将这个项目的Primary Output添加到Setup Project的输出中。其实没有必要,完全可以在主项目中添加installer,经过测试这样完全能够实现在安装或卸载期间自定义操作的需求。

          测试环境:VS2010/VS2008 .NET Framework 2.0

  • 相关阅读:
    hdu 1455 N个短木棒 拼成长度相等的几根长木棒 (DFS)
    hdu 1181 以b开头m结尾的咒语 (DFS)
    hdu 1258 从n个数中找和为t的组合 (DFS)
    hdu 4707 仓鼠 记录深度 (BFS)
    LightOJ 1140 How Many Zeroes? (数位DP)
    HDU 3709 Balanced Number (数位DP)
    HDU 3652 B-number (数位DP)
    HDU 5900 QSC and Master (区间DP)
    HDU 5901 Count primes (模板题)
    CodeForces 712C Memory and De-Evolution (贪心+暴力)
  • 原文地址:https://www.cnblogs.com/googlegis/p/2978721.html
Copyright © 2011-2022 走看看