手把手教你实现.NET程序打包

开发 后端
.NET程序进行打包,主要是为了方便用户进行安装。这也是广大.NET程序员完成开发与测试后,最后的一个步骤。

1、在这个安装包制作的过程中,所用到的一些图片或者文件,如:快捷键图片,安装步骤中每个图形界面的背景图片等都要事先在[应用程序文件夹]中事先添加好这些图片,即在安装项目中添加这些图片,文件好像是解决方案下debug下的所有文件都拷贝,如exe、config、rpt还有图片等

2、安装包中的那个Install里面的方法的执行时间是在:所以的文件都安装好了后再执行其中的号码。如客户端安装是在配置文件已经装好了后,但是其中的配置节还没有信息,但是在代码中赋值之后就有了,还有服务器也一样,如数据库也一样,首先是拷贝到客户端电脑上,然后再执行install中的代码,。获取硬盘上的数据库文件,然后再在数据库中创建,并且引用到这个数据库文件

***、给安装项目添加必要的文件,貌似是应用程序debug文件夹下的所有文件,还有是安装系统要用的图片文件

第二、添加系统必备:安装项目右键->属性->选择系统必备,

必选上[数据访问组件]、[.net 2.0]、[windows installer 3.1]。如果应用程序中有rpt的报表就要加上报表引擎

其中【指定系统必备组件的安装位置】要选择第二个,【从与我的应用程序相同的位置下载系统必备组件】

(第三)选择应用程序文件夹。右键添加项目输出项。将应用程序设置为主输出

第三、添加卸载程序

打开系统目录C:\WINDOWS\system32找到文件msiexec.exe,复制到刚创建的安装项目文件系统视图的应用程序文件夹中。

第四、创建【用户的'程序'菜单(包括安装和卸载)】

首先创建一个文件夹,然后在文件夹里创建下面两个,因为这个文件夹就是在开始菜单->程序->该文件夹->安装和卸载

1、创建卸载快捷键(先选择程序,然后配属性):

选择【用户的'程序'菜单】->在中间空白地方右键【创建快捷键】->选择msiexec.exe->右键快捷键选择属性->修改Name和ICON->配置Arguments属性。

配置Arguments属性的方法是:单击安装项目,是左键单击,然后找到ProductCode,复制下来,然后Arguments=/x ProductCode(这里注意有个空格)。

2、创建安装快捷键(也是先选择程序,然后配属性):

选择【用户的'程序'菜单】->在中间空白地方右键【创建快捷键】->选择[应用程序的exe文件]->右键快捷键选择属性->修改Name和ICON,且安装不需要          配Arguments属性

3、在【用户桌面】中重复第2步的操作

第五、添加用户操作界面

右键安装项目->视图->用户界面:

安装的过程无非就是:启动->进度->结束

 给启动添加一个【文本框A】,并且将它上移到安装文件夹的上面(安装程序运行的时候就是按着上面的顺序运行的)

 ->右键这个【文本框A】,填写其中的值

第六、添加自定义操作

为安装解决方案添加一个类库项目,删除Class1.cs

为类库项目添加一个【安装程序类】->Installer1

第七、完成将我们自定义的安装类接入到安装过程:

1、将我们新建的类库作为主输出添加到安装项目中

选择【应用程序文件夹】,在中间空白部分右键选择【添加项目输出】将设置新建的类库作为主输出

2、打开安装项目的“自定义操作视图”然后在相应(安装、卸载和回滚等)的节点上“右键”添加自定义操作《选择主输出》

右键选择【CustomActionData】

 /PassWord=[PASSWORD] /UserName=[USERNAME] /Server=[SERVER] /TargetDir="[TARGETDIR]\"

(注:/targetdir="[TARGETDIR]\"传递安装目录的路径、[PASSWORD]等这些是我们在用户界面上设置的文本框的属性)

第八、再次完善新建的类库,给其中添加方法

1、重写安装函数public override void Install(System.Collections.IDictionary stateSaver)

2、重写卸载函数public override void Uninstall(IDictionary savedState)

3、重写安装完成后函数 protected override void OnAfterInstall(IDictionary savedState)

完成

附加:如果我们想在程序卸载的时候保留某些文件则需要配置这些文件的属性如下即可:即:Permanent为true

在安装的的过程中,在应用程序(不是安装解决方案)有些图片文件或者rpt文件也要放在安装后的文件夹中那么就这样设置

将应用程序中的这些文件的一个属性【复制到输出目录】属性为:

”如果较新则复制”或者“始终复制”,同时在安装项目中添加winfrom项目的“内容文件输出”则在安装包生成过程中自动复制文件到安装包中。

附加2、卸载方法二:(推荐)

1.先生成安装包,记下ProductCode(选择解决方案资源管理器根目录如setup1,再查看属性

标签,不是右键中的属性),下面要用到

2.用VS.net建立一个新的控制台程序uninst.exe文件

  1. 'power by: landlordh  
  2. 'for 2000,xp,2003  
  3. Module uninstall  
  4.     Sub Main()  
  5.         Dim myProcess As Process = New Process  
  6.         If System.Environment.OSVersion.ToString.IndexOf("NT 5") Then  
  7.             myProcess.Start("msiexec", "/X{2B65D4A9-C146-4808-AB4B-321FB077955  
  8. 9}")  '改为自己的ProductCode  
  9.         End If  
  10.         myProcess.Close()  
  11.     End Sub  
  12. End Module 

3.将控制台程序BIN目录的exe文件加入到打包程序文件中,在程序组创建uninst.exe的快捷

方式

附加3、可以再安装类库项目中再建立一个winform窗体程序,然后在安装类中调用,因为我们在安装项目中添加了一个文本框A其实目的就是更改config文件,那么这里再建立一个winform项目的话也可以实现同样的效果,而且还可以进行更好看的界面

安装包的版本升级,每次升级一定要设置Vesion这个属性和ProductCode这个属性,同时也要设置卸载图标的那个属性,否则当再次安装的时候会提示你到控制面板中删除,然后每次升级的时候版本号要比上个版本号要高,否则的话会提示你不能安装,这种情况只能手动卸载掉电脑上的应用程序然后再进行安装

原文链接:http://www.cnblogs.com/kuyijie/archive/2011/01/05/1926670.html

 【编辑推荐】

  1. .NET 3.5扩展方法点评:优点与问题
  2. 一个.NET调用PHP Web Service的典型例子
  3. .NET 4.0的ICustomQueryInterface新特性
  4. 在.NET反应性框架中实现LINQ
  5. .NET 3.5扩展方法和Lambda表达式


 

责任编辑:彭凡 来源: 博客园
相关推荐

2023-04-26 12:46:43

DockerSpringKubernetes

2009-11-09 14:57:37

WCF上传文件

2011-05-03 15:59:00

黑盒打印机

2011-01-10 14:41:26

2021-07-14 09:00:00

JavaFX开发应用

2009-06-05 09:49:18

修改.NET Frammscorlib.dl

2009-11-02 15:33:53

VB.NET Data

2021-03-12 10:01:24

JavaScript 前端表单验证

2020-05-15 08:07:33

JWT登录单点

2011-04-21 10:32:44

MySQL双机同步

2011-02-22 13:46:27

微软SQL.NET

2021-02-26 11:54:38

MyBatis 插件接口

2021-12-28 08:38:26

Linux 中断唤醒系统Linux 系统

2022-01-08 20:04:20

拦截系统调用

2022-03-14 14:47:21

HarmonyOS操作系统鸿蒙

2022-12-07 08:42:35

2022-07-27 08:16:22

搜索引擎Lucene

2022-02-15 09:03:07

Pythonmofish库代码

2015-07-15 13:18:27

附近的人开发

2016-05-12 11:54:39

点赞
收藏

51CTO技术栈公众号