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

  • 相关阅读:
    【题解】CodeChef
    【题解】AT1984 Wide Swap(拓扑排序)
    【题解】CF917D Stranger Trees(prufer序列+二项式反演)
    【题解】UVA
    【题解】P3980 [NOI2008]志愿者招募(费用流求线性规划)
    【题解】AT2064 Many Easy Problems(转换+NTT)
    【题解】AT1983 BBQ Hard (格路)
    【总结】不同卷积如何来搞
    【瞎讲】 Cayley-Hamilton 常系数齐次线性递推式第n项的快速计算 (m=1e5,n=1e18)
    计算几何小结计算几何小结
  • 原文地址:https://www.cnblogs.com/googlegis/p/2978721.html
Copyright © 2011-2022 走看看