您的位置:首页

VS打包部署图文具体步骤及程序防卸载的制作(password验证卸载)

2017-05-26 15:45 531 查看
1、 在vs2010 选择“新建项目->“其它项目类型”->“ Visual StudioInstallerà

“安装项目”:



命名为:Setup321 。

这是在VS2010中将有三个目录,

1.“应用程序目录”表示要安装的应用程序须要加入的文件。

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

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

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



加入的文件通常是已经编译过 应用程序的debug文件夹下的文件



假设debug 以下有子目录 则须要“加入目录”,比如:data



然后把相应的子文件中的内容加入到此目录中;

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



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



选择系统必备:



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

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



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

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



然后VS2010会创建例如以下文件:



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






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

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

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

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



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

比如我们设置为:BeyondKKO;Manufacturer:自由公司;ProductName:串口測试。

把InstallAllUsers 设置为True 。

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

在安装时会默觉得“不论什么人”,否则默觉得“仅仅有我”)



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



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

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





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



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

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

B. “用户的‘程序’菜单” 中加入一个目录。命名为:“串口程序”

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

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

在“应用程序目录”中加入:C:Windows\System32\Msiexec.exe(这里要说明一下,假设不须要在卸载方面做手脚就直接加入C:Windows\System32\Msiexec.exe,假设须要放卸载或者password验证卸载,此处加入的EXE文件就是此文章后面讲到的防卸载程序运行后产生的EXE文件,请分清!。!。!

!。!







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



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



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






6、 完毕以上步骤,就能够生成解决方式了。



在debug目录中就是我们须要的安装包。



7、 生成解决方式后,


8、 安装完

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



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

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

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

这里为了演示,仅仅是写了一个非常easy的程序。我就不连接数据库进行password验证了。仅仅为了说明问题。假设有须要,大家在依据自己需求去改,相信大家都会连接,这里须要注意的是

这个码一定不要填错了,这个就是之前你在打包部署时的productcode,是一个程序唯一的标示,假设写错了非常有可能就把别的程序卸载了,这个跟之后注冊表里的东西有关系,大家要小心设置。这样一个简单的防卸载程序就写完了,至于怎么放到部署包里。在之前加入卸载程序时,把卸载程序运行完产生的EXE文件当里边即可,就不须要加入Msiexec.exe了,这样打包生成完之后还没有完。你仅仅是把自己的卸载打包部署了。可是程序安装完之后。系统默认调用的是系统卸载程序,这就须要我们去改动注冊表,让系统调用我们的卸载程序,这里我仅仅做手动改动,至于怎么用程序写代码改动就不说了,网上一百度一大堆,

打开注冊表:

找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\程序名字 ,程序名字就是

这个码,然后打开这个目录,看到这个:



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

至此。基本讲诉完毕了,可能一些细节做得不是非常具体,大家能够依据自己的需求去改动程序,希望会对大家有帮助,假设有说错了的地方请大家批评指正,谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: