VS打包部署图文具体步骤及程序防卸载的制作(password验证卸载)
1、 在vs2010 选择“新建项目->“其它项目类型”->“ Visual StudioInstallerà
“安装项目”:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
命名为:Setup321 。
这是在VS2010中将有三个目录,
1.“应用程序目录”表示要安装的应用程序须要加入的文件。
2.“用户的‘程序’菜单”表示:应用程序安装完,用户的“開始菜单”中的显示的内容,一般在这个目录中,须要再创建一个文件用来存放:应用程序.exe和卸载程序.exe;
3.“用户桌面”表示:这个应用程序安装完,用户的桌面上的创建的.exe快捷方式。
2、 应用程序目录中点右键加入文件:表示加入要打包的文件;
加入的文件通常是已经编译过 应用程序的debug文件夹下的文件;
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
假设debug 以下有子目录 则须要“加入目录”,比如:data
然后把相应的子文件中的内容加入到此目录中;
把须要创建程序快捷方式的图标也加入进来:后缀名为:ico
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
3、 在创建的项目名称(Setup1)上点击右键:属性
选择系统必备:
然后选择.NET的版本号,和WindowsInstaller3.1(可选项)
选择:“从与我应用程序同样的位置下载系统必备组件”
这样安装包就会打包.NET FrameWork ,在安装时不会从网上下载.NET FrameWork组件;可是安装包会比較大。
VS2010公布.NET2.0的版本号,在创建安装程序时,须要设置启动条件:在项目名称(setup1)上,点击右键选择“视图”-》“启动条件”:
然后VS2010会创建例如以下文件:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
在“启动条件”中 , 点击“.NETFramework”在Version上面选择.NET Framework 2.0;
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
这样.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文件里,点击右键,创建快捷方式:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
重命名“串口測试程序”。然后点击右键属性:选择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、 完毕以上步骤,就能够生成解决方式了。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
在debug目录中就是我们须要的安装包。
7、 生成解决方式后,
8、 安装完
9、在開始菜单中有“串口程序”的目录,里面有我们创建的两个快捷方式;
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
原文链接:http://wenku.baidu.com/view/b93cebd433d4b14e852468bf.html?re=view 十分感谢这位作者的贡献。本文也是借用了他的文章的部分截图,我也是參考了他的文章才完毕了这一套流程,在他的基础上有了我的创新和扩展,再次感谢。!
接下来是我的创新扩展。是本文的核心内容:
我之前在制作一款控制软件时遇到了这样一个问题:要防止卸载。所以就涉及到要写一个卸载程序来控制卸载,本来还打算流氓一点防卸载呢,客户要求是输入正确password就能够卸载,可是之前没有研究过这方面的东西就非常头疼,然后就開始研究注冊表,研究操作系统是调用什么程序来实现卸载的,经过了几天的研究,最终有了收获,就是仅仅要我们写一个卸载程序。然后让系统在卸载时使用我们自己的卸载程序来卸载,我们就能够控制卸载了。上代码吧,
这里为了演示,仅仅是写了一个非常easy的程序。我就不连接数据库进行password验证了。仅仅为了说明问题。假设有须要,大家在依据自己需求去改,相信大家都会连接,这里须要注意的是这个码一定不要填错了,这个就是之前你在打包部署时的productcode,是一个程序唯一的标示,假设写错了非常有可能就把别的程序卸载了,这个跟之后注冊表里的东西有关系,大家要小心设置。这样一个简单的防卸载程序就写完了,至于怎么放到部署包里。在之前加入卸载程序时,把卸载程序运行完产生的EXE文件当里边即可,就不须要加入Msiexec.exe了,这样打包生成完之后还没有完。你仅仅是把自己的卸载打包部署了。可是程序安装完之后。系统默认调用的是系统卸载程序,这就须要我们去改动注冊表,让系统调用我们的卸载程序,这里我仅仅做手动改动,至于怎么用程序写代码改动就不说了,网上一百度一大堆,
打开注冊表:
找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\程序名字 ,程序名字就是
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">这个码,然后打开这个目录,看到这个:
首先我们将WindowsInstaller
删除,然后将uninstallstring 改动为你的卸载程序所在的位置。直接写文件位置即可。这样你在打开控制面板卸载程序时。系统调用的就是自己的卸载程序了。就能够做到防卸载。
至此。基本讲诉完毕了,可能一些细节做得不是非常具体,大家能够依据自己的需求去改动程序,希望会对大家有帮助,假设有说错了的地方请大家批评指正,谢谢
VS打包部署图文具体步骤及程序防卸载的制作(password验证卸载)的更多相关文章
- VS2012程序打包部署详解
VS2012没有自带打包工具,所以要先下载并安装一个打包工具.我采用微软提供的打包工具: InstallShield2015LimitedEdition.下载地址:https://msdn.micr ...
- 【转】VS2012程序打包部署详解
上篇博客把收费系统的总体设计进行了一遍讲解,讲解的同时掺杂了些有关.NET编译机制的总结.程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的是没有了打包工具.不知道出于什么原因 ...
- [转载]VS2012程序打包部署详解
上篇博客把收费系统的总体设计进行了一遍讲解,讲解的同时掺杂了些有关.NET编译机制的总结.程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的是没有了打包工具.不知道出于什么原因 ...
- (转) VS2012程序打包部署详解
程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的是没有了打包工具.不知道出于什么原因微软没有将打包工具集成在开发环境中,但是我知道总会有解决办法的. 经过翻阅资料发现 ...
- VS2012及以上版本 程序打包部署详解
引用: http://blog.csdn.net/zhang_xinxiu/article/details/9099757 程序编写测试完成后接下来我们要做的是打包部署程序,但VS2012让人心痛的 ...
- VS2012 打包部署程序
一. 下载 InstallShield 2015(支持VS2012) VS2012没有自带打包工具,所以要先下载并安装一个打包工具.我采用微软提供的打包工具: InstallShield2015 ...
- 用C#做成的程序如何打包部署,在其他PC机运行
刚刚接触C#,在linux下面做习惯了c和c++,在本机运行OK后,得瑟的去别的机子,居然运行不了,你妹啊,怎么回事,没有.NET Framework,原来和java类似,.NET Framework ...
- VS2012打包部署Winform程序
打包前的准备工作: 新建一个打包部署项目,点OK,如果是第一次使用的话,会打开一个网页,按照提示的步骤来做, 点击上面的step2的网址,进入到另一个网页: 填写完右边的信息,点击“download ...
- VS2013程序打包部署(图解),vs2013部署
VS2013程序打包部署(图解),vs2013部署 首先要说明的是VS解决方案配置下的Debug模式和Release模式有什么区别.Debug模式通常称为调试模式,它包含调试信息,未对代码进行优化,方 ...
随机推荐
- CAD参数绘制角度标注(com接口)
主要用到函数说明: _DMxDrawX::DrawDimAngular 绘制一个角度标注.详细说明如下: 参数 说明 DOUBLE dAngleVertexX 角度标注的顶点的X值 DOUBLE dA ...
- babun
Table of Contents 1. 环境 2. 检查/更新 3. 包管理 4. 版本管理 Git 4.1. 设置姓名邮箱(全局方式) 4.2. 添加 SSH 4.3. 链接测试 4.4. 权 ...
- go的指针学习
1)指针是什么? 一个指针变量可以指向任何一个值的内存地址它指向那个值的内存地址 说白了就是可以先存储内存的地址,在用内存地址找到对应值 2)go中的使用 Go 语言的取地址符是 &,放到一个 ...
- source collection list
1.Anaconda:http://www.cnblogs.com/xiaoming123abc/p/6970890.html https://conda.io/docs/help-support.h ...
- linux纯字符界面不支持中文
[2017-01-17] linux纯字符界面不支持中文
- Python之字符串计算(计算器)
Python之字符串计算(计算器) import re expression = '-1-2*((60+2*(-3-40.0+42425/5)*(9-2*5/3+357/553/3*99/4*2998 ...
- Python之数字
Python之数字 int(数字)===>在Python3中,int没有范围,在Python2中,int超出范围就叫长整型(Long). 浮点运算:单精度 float 双精度 double a: ...
- windows枚举串口
1. 枚举键值 HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM 2. SETUPAPI方式 int EnumPortsWdm() { int i, d ...
- java项目连接access数据库
1.导入Access_JDBC30.jar到项目中 jar包百度云链接:https://pan.baidu.com/s/10HFM3HomMArvfHjklA_1MA 密码:0qxp 项目名称-> ...
- Android BGABadgeView:BGABadgeFrameLayout(5)
Android BGABadgeView:BGABadgeFrameLayout(5) BGABadgeView除了有自己的线性布局,相对布局外(见附录文章7,8),还实现了FrameLayou ...