VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

VS打包部署图文详细步骤及程序防卸载的制作(密码验证卸载)

1、  在vs2010 选择“新建项目->“其他项目类型”->“ Visual StudioInstallerà

“安装项目”:

 VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

命名为:Setup321 。

这是在VS2010中将有三个文件夹,

1.“应用程序文件夹”表示要安装的应用程序需要添加的文件;

2.“用户的‘程序’菜单”表示:应用程序安装完,用户的“开始菜单”中的显示的内容,一般在这个文件夹中,需要再创建一个文件用来存放:应用程序.exe和卸载程序.exe;

3.“用户桌面”表示:这个应用程序安装完,用户的桌面上的创建的.exe快捷方式。

2、  应用程序文件夹中点右键添加文件:表示添加要打包的文件;

 VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

添加的文件一般是已经编译过 应用程序的debug目录下的文件

 VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

如果debug 下面有子文件夹 则需要“添加文件夹”,例如:data

                   VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

然后把对应的子文件里的内容添加到此文件夹中;

把需要创建程序快捷方式的图标也添加进来:后缀名为:ico

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

3、   在创建的项目名称(Setup1)上点击右键:属性

 VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

     选择系统必备:

     VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

然后选择.NET的版本,和WindowsInstaller3.1(可选项)

选择:“从与我应用程序相同的位置下载系统必备组件”

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

这样安装包就会打包.NET FrameWork ,在安装时不会从网上下载.NET  FrameWork组件;但是安装包会比较大。

VS2010发布.NET2.0的版本,在创建安装程序时,需要设置启动条件:在项目名称(setup1)上,点击右键选择“视图”-》“启动条件”: 

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

然后VS2010会创建如下文件:

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

在“启动条件”中 , 点击“.NETFramework”在Version上面选择.NET Framework 2.0;

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

这样.NET Framework 2.0上创建的项目在安装时,就不会安装.NET3.5或其他版本

也不会重启(解决.NET 2.0 创建的项目,安装.NETFrameWork3.5的问题)。

4、  设置安装文件的目录(路径):

创建的项目名称(setup1)点击左键(不是右键),在属性中设置参数如下图:

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

其中Author 为作者;Manufacturer为公司名称;ProductName为应用程序的名字;

例如我们设置为:BeyondKKO;Manufacturer:*公司;ProductName:串口测试。

把InstallAllUsers 设置为True 。

(这样在“控制面板”程序中会显示公司的名称;

在安装时会默认为“任何人”,否则默认为“只有我”)

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

在应用程序上点击左键,如下图:第一个为系统主目录(默认C:\Programe),第二个为公司名([Manufacturer]),第三个为应用程序名称,这样在安装时就会创建两层的文件路径。需要删除DefaultLocation中的:[Manufacturer]。删除后只有应用程序的名称

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

5、 创建应用程序图标与卸载程序:

A.“在应用程序文件夹”中的.exe文件中,点击右键,创建快捷方式:

 VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

重命名“串口测试程序”,然后点击右键属性:选择Icon

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)


 

双击进入选择我们之前添加的“1.ico”

确定后,拖动此快捷方式到“用户桌面”

B. “用户的‘程序’菜单” 中添加一个文件夹,命名为:“串口程序”

然后同样的方式创建TEXTCOM.exe一个快捷方式(“串口测试程序”),拖动到“串口程序”中;

然后给.NET应用程序创建一个卸载程序:

在“应用程序文件夹”中添加:C:Windows\System32\Msiexec.exe(这里要说明一下,如果不需要在卸载方面做手脚就直接添加C:Windows\System32\Msiexec.exe,如果需要放卸载或者密码验证卸载,此处添加的EXE文件就是此文章后面讲到的防卸载程序执行后产生的EXE文件,请分清!!!!!!!!!)

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)


右键创建快捷方式,重命名为:卸载,把此快捷方式拖动到“串口程序”;

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

点击项目名称(Setup1),在属性中找到:ProductCode

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

复制此ProductCode ,粘贴到“卸载”快捷方式的Arguments属性,前面加/x空格

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

6、  完成以上步骤,就可以生成解决方案了。

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

在debug文件夹中就是我们需要的安装包。


VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

7、  生成解决方案后,VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

8、  安装完


9、在开始菜单中有“串口程序”的文件夹,里面有我们创建的两个快捷方式;

     

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)


原文链接:http://wenku.baidu.com/view/b93cebd433d4b14e852468bf.html?re=view   十分感谢这位作者的贡献,本文也是借用了他的文章的部分截图,我也是参考了他的文章才完成了这一套流程,在他的基础上有了我的创新和扩展,再次感谢!!

接下来是我的创新扩展,是本文的核心内容:


我之前在制作一款控制软件时遇到了这样一个问题:要防止卸载,所以就涉及到要写一个卸载程序来控制卸载,本来还打算流氓一点防卸载呢,客户要求是输入正确密码就可以卸载,但是之前没有研究过这方面的东西就很头疼,然后就开始研究注册表,研究操作系统是调用什么程序来实现卸载的,经过了几天的研究,终于有了收获,就是只要我们写一个卸载程序,然后让系统在卸载时使用我们自己的卸载程序来卸载,我们就可以控制卸载了,上代码吧,

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

这里为了演示,只是写了一个很简单的程序,我就不连接数据库进行密码验证了,只为了说明问题,如果有需要,大家在根据自己需求去改,相信大家都会连接,这里需要注意的是VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)这个码一定不要填错了,这个就是之前你在打包部署时的productcode,是一个程序唯一的标示,如果写错了很有可能就把别的程序卸载了,这个跟之后注册表里的东西有关系,大家要小心设置,这样一个简单的防卸载程序就写完了,至于怎么放到部署包里,在之前添加卸载程序时,把卸载程序执行完产生的EXE文件当里边就行,就不需要添加Msiexec.exe了,这样打包生成完之后还没有完,你只是把自己的卸载打包部署了,但是程序安装完之后,系统默认调用的是系统卸载程序,这就需要我们去修改注册表,让系统调用我们的卸载程序,这里我只做手动修改,至于怎么用程序写代码修改就不说了,网上一百度一大堆,

打开注册表:

找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\程序名字 ,程序名字就是VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)这个码,然后打开这个文件夹,看到这个:

VS打包部署图文详细方法及程序防卸载的制作(密码验证卸载)

        首先我们将WindowsInstaller 删除,然后将uninstallstring 修改为你的卸载程序所在的位置,直接写文件位置就行,这样你在打开控制面板卸载程序时,系统调用的就是自己的卸载程序了,就可以做到防卸载。

      至此,基本讲诉完成了,可能一些细节做得不是很详细,大家可以根据自己的需求去修改程序,希望会对大家有帮助,如果有说错了的地方请大家批评指正,谢谢

版权声明:本文为博主原创文章,未经博主允许不得转载。