一起谈.NET技术,.NET 打包入门

简介:   1、在这个安装包制作的过程中,所用到的一些图片或者文件,如:快捷键图片,安装步骤中每个图形界面的背景图片等都要事先在[应用程序文件夹]中事先添加好这些图片,即在安装项目中添加这些图片,文件好像是解决方案下debug下的所有文件都拷贝,如exe、config、rpt还有图片等  2、安装包中的那个Install里面的方法的执行时间是在:所以的文件都安装好了后再执行其中的号码。

  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文件

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

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

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

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

<感谢斌斌资料的总结>

目录
相关文章
|
2月前
|
存储 Shell Linux
快速上手基于 BaGet 的脚本自动化构建 .net 应用打包
本文介绍了如何使用脚本自动化构建 `.net` 应用的 `nuget` 包并推送到指定服务仓库。首先概述了 `BaGet`——一个开源、轻量级且高性能的 `NuGet` 服务器,支持多种存储后端及配置选项。接着详细描述了 `BaGet` 的安装、配置及使用方法,并提供了 `PowerShell` 和 `Bash` 脚本实例,用于自动化推送 `.nupkg` 文件。最后总结了 `BaGet` 的优势及其在实际部署中的便捷性。
110 10
|
20天前
|
SQL XML 关系型数据库
入门指南:利用NHibernate简化.NET应用程序的数据访问
【10月更文挑战第13天】NHibernate是一个面向.NET的开源对象关系映射(ORM)工具,它提供了从数据库表到应用程序中的对象之间的映射。通过使用NHibernate,开发者可以专注于业务逻辑和领域模型的设计,而无需直接编写复杂的SQL语句来处理数据持久化问题。NHibernate支持多种数据库,并且具有高度的灵活性和可扩展性。
37 2
|
30天前
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
52 8
|
25天前
|
人工智能 开发框架 C#
C#/.NET/.NET Core技术前沿周刊 | 第 6 期(2024年9.16-9.22)
C#/.NET/.NET Core技术前沿周刊 | 第 6 期(2024年9.16-9.22)
|
24天前
|
人工智能 开发框架 Cloud Native
C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)
C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)
|
24天前
|
数据可视化 NoSQL C#
C#/.NET/.NET Core技术前沿周刊 | 第 8 期(2024年10.01-10.06)
C#/.NET/.NET Core技术前沿周刊 | 第 8 期(2024年10.01-10.06)
|
25天前
|
设计模式 开发框架 C#
C#/.NET/.NET Core技术前沿周刊 | 第 4 期(2024年9.1-9.8)
C#/.NET/.NET Core技术前沿周刊 | 第 4 期(2024年9.1-9.8)
|
2月前
|
人工智能 前端开发 开发工具
解读.NET 技术的开发潜力
本文全面介绍了.NET技术在软件开发领域的核心优势、创新应用及面临的挑战。.NET以其统一的开发平台、强大的工具和跨平台能力,成为企业级应用、Web应用乃至游戏开发的理想选择。然而,在性能优化、容器化及AI集成等方面仍需不断突破。通过积极拥抱开源和社区驱动模式,.NET将持续推动软件开发的进步。
54 1
|
2月前
|
Ubuntu 持续交付 API
如何使用 dotnet pack 打包 .NET 跨平台程序集?
`dotnet pack` 是 .NET Core 的 NuGet 包打包工具,用于将代码打包成 NuGet 包。通过命令 `dotnet pack` 可生成 `.nupkg` 文件。使用 `--include-symbols` 和 `--include-source` 选项可分别创建包含调试符号和源文件的包。默认情况下,`dotnet pack` 会先构建项目,可通过 `--no-build` 跳过构建。此外,还可以使用 `--output` 指定输出目录、`-c` 设置配置等。示例展示了创建类库项目并打包的过程。更多详情及命令选项,请参考官方文档。
172 11
|
2月前
|
监控 网络协议 API
.NET WebSocket 技术深入解析,你学会了吗?
【9月更文挑战第4天】WebSocket 作为一种全双工协议,凭借低延迟和高性能特点,成为实时应用的首选技术。.NET 框架提供了强大的 WebSocket 支持,使实时通信变得简单。本文介绍 WebSocket 的基本概念、.NET 中的使用方法及编程模型,并探讨其在实时聊天、监控、在线游戏和协同编辑等场景的应用,同时分享最佳实践,帮助开发者构建高效实时应用。
134 12