C#程序打包与部署,包括处理安装向导中用户输入的参数,创建卸载程序。
①
1,解决方案—添加—新建项目—其他项目类型—安装和部署—安装项目,输入名称Setup,点“确定”
2,添加主输出:单击左侧“应用程序文件夹”,右侧右键—添加—项目输出-主输出-确定。
3,添加开始程序中的文件夹:右击左侧“用户的程序菜单”—添加—文件夹,自己设置名称。
4,添加开始程序中和桌面的主程序快捷方式:左侧单击刚新建的文件夹--右侧右键—创建新的快捷方式--选择“应用程序文件夹---主输出--“确定” 左侧单击用户桌面--右侧右键—创建新的快捷方式---应用程序文件夹---主输出---确定
5,设置程序图标:先把图标文件放到你的程序目录下---单击左侧“应用程序文件夹”,---空白处右键—添加—文件---图标文件。然后左侧“用户的程序菜单下”的文件夹---单击刚才新建的程序快捷方式---属性窗口---Icon—浏览—图标文件---确定。同理添加“用户桌面”里快捷方式的图标。
6,添加卸载功能:在c:\windows\system32文件夹下找到msiexec.exe文件,复制到程序目录下,然后按照图标的方法添加到“应用程序文件夹”中,然后像添加主程序快捷方式一样在开始程序中添加这个卸载的快捷方式,名字可以自己设置。然后在“解决方案管理器”中单击“Setup”,也就是你的安装项目,在属性窗口找到“ProductCode”,复制它后面的值,然后单击刚新建的卸载的快捷方式,属性中找到“Arguments”,在后面的框里输入“/x”再加上刚才复制的值就行了。
7,在Setup属性中可以自己设置“ProductName”和“Title”的内容;
8,修改安装默认路径:单击左侧“应用程序文件夹”,属性中“DefaultLocation”把中间的“[manufacturer]”删除,否则安装路径中会出现你自己的用户名。
9,添加系统必备:右击setup—属性—系统必备按钮,在“指定系统必备组件的安装位置”中选择“从与我的应用程序相同的位置下载系统必备组件”,确定。
10,生成安装项目:右击“Setup”—生成,稍等会儿,OK,大功告成了!然后到你的项目文件夹中可以看到“Setup”文件夹,在“Debug”下就可以看到安装文件了!
②
一、应用程序文件夹操作
1、新建一个安装项目,起名“测试打包”
这里要记住路径了,不然,打完了找不着安装包在哪里,可就说不过去了,呵呵!
2、这里就会出现三个文件夹,不用多说一看就明白意思,点“应用程序文件夹-->添加-->文件夹
这里的作用就是好管理,重启一下名字,这里我就叫它“测试打包系统”
3、在“测试打包系统”文件夹上右键-->添加-->项目输出
下一步:添加主输出
一般这个就够了,当然你还有别的资源的话就要添加上去了!
4、接下来在“应用程序文件夹”下依些建几个文件夹,我建了3个
Images里我放的是图片,2个ICO和1个BMP,后面会用到!
Unit放置卸载的文件,这里你记住有这么回事就行了,下面专门会讲这个文件是怎么来的!
最下面的一个就不用多说了,上面操作过了,放了一个主输出文件!
到这里一个简单的打包项目已完成了,呵呵,右键生成一下,在项目目录中找着安装文件就可以运行安装的用了!
但是这样的安装包,你安装完一不小心还找不着安装在哪里去了,呵,因为这样只有在安装文件夹里有东东,而我们所熟悉的开始菜单和桌面上没东西啊!不方便,那就给加上去吧!
二、开始菜单-->程序-->里添加内容操作
1、点“用户的“程序”菜单”,新建一个文件夹!步骤和前面一样,不细说!
我起名叫“测试打包系统”
2、在中间的桌口中(上图的名称下面部分位置啊),右键-->创建新的快捷方式,出现下面的界面
选择“应用程序文件夹”里面的,也就是我们添加的主输出文件!
3、更改新添加"快捷方式的属性"
看到了吧,这里我更改了一下name和Icon,更改Icon,看到上图中的浏览了吧,打着前面Images下面的ICO文件就可以了!
4、用上面同样的方式在建一个快捷方式,指向前面添加的Unit文件夹里的文件!同样改一下属性!
看到了吧,我里面有2个快捷方式!
这样就OK了!安装完后开始菜单中就会出现上面添加的两个快捷方式!
三、用户桌面添加内容的操作
1、在文件夹中间窗口中添加快捷方式,指向“应用程序文件夹”里的主输出,然后更改一下属性就OK了!
这样安装完成后桌面就会出现一个快速启动!
到这里一个安装和部署项目也就差不多了,但是吗,离完美还差的远呢,把我现在掌握的就先写出来吧
四、自定义用户界面
1、打开用户界面
2、这里可以设置已有窗体的属性和新增窗体
设置窗体属性
比如这里可以设置一下BannerBitmap,安装窗口上面的图片,方法和前面的ICO文件一样,浏览去找Images下面的Bmp文件即可!
就是这样的效果,哈哈,效果差了点啊!
可以根据需要来新增窗口,比如密码啊,等等
就是上面的这个窗口
五、卸载程序怎么打包上去?
我试了好几种方面都不太好使,可能是没理解!最后用了这一种方法,感觉还不错!
1、新建一个控制台程序
2、看代码
Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace UninStall
{
class Program
{
static void Main(string[] args)
{
string sysroot = System.Environment.SystemDirectory;
System.Diagnostics.Process.Start(sysroot + "\\msiexec.exe", "/x {522B529D-8A62-432D-962F-D0CFF826775E} /qr");
}
}
}
注意上面代码里的红字部分,这个就是你要打包的程序的安装与部署项目的ProductCode,那么这个ProductCode在哪里找呢?请记住,这里是两个系统,一个是你要打包的系统,另一个是控制台程序,所以啊,这点,要理解!去你要打包的项目里去找
看到了吧,就是它了!把它拷贝过来,放在控制台程序里生成一下,上面UNIT里所导入的文件就是现在生成的文件了!!
C#程序打包与部署,包括处理安装向导中用户输入的参数,创建卸载程序。相关推荐
- DotNet4应用程序打包工具(把DotNet4安装程序打包进你的应用程序;WINAPI开发,无dotNet环境也可顺利执行)【一】整体思路...
先说废话 很多朋友对我写的这个系列的第五篇比较感兴趣:http://www.cnblogs.com/liulun/archive/2011/12/08/2280110.html 因为我承诺第五篇就公布 ...
- 编写程序,对用户输入的英文字符串中出现的英文字母进行提取 (不区分大小写,重复字母只计一次),并将提取的结果按照字母表顺序升序排列后输出。 例如,用户输入“I miss you.”,程序输出“i, m
编写程序,对用户输入的英文字符串中出现的英文字母进行提取 (不区分大小写,重复字母只计一次),并将提取的结果按照字母表顺序升序排列后输出. 例如,用户输入"I miss you." ...
- 让用户用键盘输入一个数字,程序可以由 1+2 +3+...... 一直累加到用户输入的数为止,并输出算式和计算结果。
让用户用键盘输入一个数字,程序可以由 1+2 +3+...... 一直累加到用户输入的数为止,并输出算式和计算结果. 代码 演示 代码 #/bin/bash read -p "请输入一个数: ...
- java程序打包成exe:一键安装双击运行——Java脱离jre安装程序制作
转载的,时间是2012年 所以时间可能有点久 不过 还是可以学到很多东西 对于Java桌面应用来说,比较烦琐的就是安装部署问题,如:客户端是否安装有jre.jre版本.jre在哪里下载.如何用j ...
- linux 安装程序丢失链接动态库,Linux安装软件过程中提示缺少动态链接库.so的解决方法...
Linux在安装软件的时候有时会出现错误,提示缺少动态链接库.so,该问题是由什么原因导致的呢? 情况分析: 1.缺少动态连接库.so-cannot open shared object file:N ...
- 用于计算无线充电中LCC补偿网络器件参数的小程序
简 介: 俗话说,磨刀不误砍柴工.好的工具可以做到事半功倍.本文是针对设计无线充电过程中,设计LCC补偿回路中所需要进行的计算过程,搜集到有参加竞赛的同学编写的小程序.可以方便对于接受电路的LCC计算 ...
- 用java提示用户输入学生个数_编写程序,提示用户输入一个数N,然后显示1~N的所有偶数平方值,求大神看看我写的程序哪里有问题。。...
点击查看编写程序,提示用户输入一个数N,然后显示1~N的所有偶数平方值,求大神看看我写的程序哪里有问题..具体信息 答: 修改后的程序:#includeint main(){int n,a,b;pri ...
- Flex Air程序打包成独立的exe安装文件
2019独角兽企业重金招聘Python工程师标准>>> 开发背景: FlexBuilder3.2开发生成的Air程序需要能够独立安装,事先不需要安装AdobeAir运行环境 实现方法 ...
- python 暂停程序 等待用户输入_遇上Python程序暂停时,不要慌,教你正确的处理方法...
今天为大家带来的内容是:遇上Python程序暂停时,不要慌,教你正确的处理方法! 文章内容主要介绍了Python程序暂停的实现代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下,喜欢的记得点 ...
最新文章
- C#中如何将将数据导出到word excel 中
- 深入理解Activity启动流程(三)–Activity启动的详细流程2
- 中级职称计算机网络安全论文,中级职称答辩论文的计算机络综合布线系统设计.doc...
- Nessus Scan
- Unity编辑器扩展Texture显示选择框
- dog log 算子_DoG和LoG算子
- [Erlang07] Erlang 做图形化编程的尝试:纯Erlang做2048游戏
- CVPR2021论文整理
- fatal: Not a git repository (or any parent up to mount point /home) Stopping at filesystem boundary
- Android 折线图(MPAndroidChart框架)
- mysql 5.6.14 winx64_MySQL-5.6.14-winx64的免安装配置方法
- 再见SNDA,在离职之后
- Linux 错误信息的查看(摘自鸟哥的私房菜一书)
- 解决冲突后,git merge --continue 时 lint不通过
- Centos7虚拟机的DNS服务器的配置和测试
- 内中断,外中断,软中断,硬中断,异常,陷阱
- opencv自定义从一幅图片截取特定区域函数cvExtractRegion
- 北京大兴区强关私立幼儿园 致数千儿童无学可上
- 小米空气净化器滤芯RFID解密
- “笨办法”学Python3,Zed A. Shaw,习题18
热门文章
- C#中执行Dos命令
- word 转 PDF时报错
- 静态成员函数运用在CALLBACK函数和线程函数中《转载》
- 使用 MSDeploy 部署网站
- Android Studio解决:Caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed
- android PPPoE拨号调试记录
- Android/Java面试题,边面试边成长,为了应试而应试
- 数据存储技术-专题介绍
- xml标签里有rownum_rownum和order by以及index的关系
- 根据一个id查找出数组里面的数据并改掉_Excel最强大的VLOOKUP以及INDEXamp;MATCH查找函数...