微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

winform程序自定义打包步骤

应该很多人都有遇到这个问题.现在给个完整的解决方案.

1.添加一个安装项目(当然你的其他项目应该都已经OK了.现在我们已经做好了一个WinUI的项目.记得要建立App.config文件,而且要有连接字符串的配置节存在.不然之后会出错.因为我没做错误处理.)

目前的App.config文件内容,connectionString值为空,需要用户在安装时输入.

 

  1. <?xml version="1.0" encoding="utf-8" ?>

     

     

  2. <configuration>

     

     

  3.   <connectionStrings>

     

     

  4.     <add name="ConnectionString" connectionString="" providerName="System.Data.sqlClient" />

     

     

  5.   </connectionStrings>

     

     

  6. </configuration>

 

复制代码

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

2.在安装项目中添加项目输出,如UI层,业务逻辑层,数据操作层,实体层,公共层等项目输出.

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

3.选中左面的用户桌面,在右边右键创建新的快捷方式.

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

4.生成安装项目,就可以生成安装程序了.不过还没完呢.

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

5.安装过程中需要用户输入连接数据库的信息或建立数据库等操作.需要对安装过程进行定制.在用户界面视图中进行.

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

6.添加用户输入信息的对话框

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

7.修改文本框的属性.最多可以有4个文本框.定义窗口的标题(BannerText),窗口的描述信息(BodyText),各文本框标签的值(Edit_Label),对应的属性名(Edit_Property),认值(Edit_Value),是否可见(Edit_Visible)等属性.

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

8.要新建一个类库项目来实现定制安装的功能.

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

9.建立功能实现类

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

10.代码如下(请注意看代码注释):

 

  1. using System;

     

     

  2. using System.Collections.Generic;

     

     

  3. using System.ComponentModel;

     

     

  4. using System.Configuration.Install;

     

     

  5. using System.Configuration;

     

     

  6. using System.Xml;

     

     

  7. using System.IO;

     

     

  8.  

     

  9. namespace SetSetup

     

     

  10. {

     

     

  11.     /// <summary>

     

     

  12.     /// 继承安装类

     

     

  13.     /// www.szitr.com

     

     

  14.     /// </summary>

     

     

  15.     [RunInstaller(true)]

     

     

  16.     public partial class SetsqlConStr : Installer

     

     

  17.     {

     

     

  18.         public SetsqlConstr()

     

     

  19.         {

     

     

  20.             InitializeComponent();

     

     

  21.         }

     

     

  22.         /// <summary>

     

     

  23.         /// 重写基类的安装方法

     

     

  24.         /// </summary>

     

     

  25.         /// <param name="stateSaver"></param>

     

     

  26.         public override void Install(System.Collections.IDictionary stateSaver)

     

     

  27.         {

     

     

  28.             base.Install(stateSaver);

     

     

  29.             //得到用户输入的参数

     

     

  30.             //参数来自于后面 第 14 步 自定义操作的参数

     

     

  31.             //自定义操作参数的属性CustomActionData:/sqlServerIP=[sqlSERVER_NAME] /DataBase=[DATABASE_NAME] /UserName=[USERNAME] /Password=[PASSWORD] /TargetDir="[TARGETDIR]/"

     

     

  32.             //中括号中的就是之前各文本框的Edit_Property值.最后一个TARGETDIR是安装路径,注意后面还有个反斜杆

     

     

  33.             string sqlServerIP = this.Context.Parameters["sqlServerIP"];

     

     

  34.             string database = this.Context.Parameters["DataBase"];

     

     

  35.             string userName = this.Context.Parameters["UserName"];

     

     

  36.             string password = this.Context.Parameters["Password"];

     

     

  37.             string targetdir = this.Context.Parameters["TargetDir"];

     

     

  38.             //这里写你要执行的代码

     

     

  39.             //组合连接字符串

     

     

  40.             string conString = String.Format("Data Source={0};Initial Catalog={1};User ID={2};Password={3};Persist Security Info=True",sqlServerIP,database,userName,password);

     

     

  41.             //更新连接字串设定值,WinUI.exe.config 要改成你设定档的名称

     

     

  42.             UpdateConConfig("ConnectionString",conString,targetdir + "WinUI.exe.config");

     

     

  43.         }

     

     

  44.  

     

  45.         /// <summary>

     

     

  46.         /// 修改设定档连接字符串的值

     

     

  47.         /// </summary>

     

     

  48.         /// <param name="conName">连接字符串名称</param>

     

     

  49.         /// <param name="conString">连接字符串</param>

     

     

  50.         /// <param name="configfilePath">设定档路径及名称</param>

     

     

  51.         public static void UpdateConConfig(string conName,string conString,string configfilePath)

     

     

  52.         {

     

     

  53.             XmlDocument xmlDoc = new XmlDocument();

     

     

  54.             //读取设定档

     

     

  55.             xmlDoc.Load(configfilePath);

     

     

  56.             //取得连接字符串的节点

     

     

  57.             XmlNode xmlNode = xmlDoc.SelectSingleNode("configuration/connectionStrings/add[@name='" + conName + "']");

     

     

  58.             //修改连接字符串

     

     

  59.             xmlNode.Attributes["connectionString"].InnerText = conString;

     

     

  60.             //保存

     

     

  61.             xmlDoc.Save(configfilePath);

     

     

  62.         }

     

     

  63.  

     

  64.         public override void Uninstall(System.Collections.IDictionary savedState)

     

     

  65.         {

     

     

  66.             base.Uninstall(savedState);

     

     

  67.         }

     

     

  68.         public override void Commit(System.Collections.IDictionary savedState)

     

     

  69.         {

     

     

  70.             base.Commit(savedState);

     

     

  71.         }

     

     

  72.         public override void Rollback(System.Collections.IDictionary savedState)

     

     

  73.         {

     

     

  74.             base.Rollback(savedState);

     

     

  75.         }

     

     

  76.     }

     

     

  77. }

 

复制代码

11.回到安装项目.打开自定义操作视图

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

12.在安装中添加自定义操作

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

13.添加刚刚第9步所建立的项目的主输出

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

14.修改自定义操作的CustomActionData属性

CustomActionData:/sqlServerIP=[sqlSERVER_NAME]/DataBase=[DATABASE_NAME] /UserName=[USERNAME] /Password=[PASSWORD]/TargetDir="[TARGETDIR]/"

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

15.重新生成一次.再执行安装程序看看.已经OK啦!

使用Visual Studio生成安装程序并实现其他自定义操作. - 浪人 - 浪人的博客

最后看看我们的设定档内容

 

  1. <?xml version="1.0" encoding="utf-8"?>

     

     

  2. <configuration>

     

     

  3.   <connectionStrings>

     

     

  4.     <add name="ConnectionString" connectionString="Data Source=DBServer;Initial Catalog=szitrDB;User ID=szitr.com;Password=szitr.com;Persist Security Info=True" providerName="System.Data.sqlClient" />

     

     

  5.   </connectionStrings>

     

     

  6. </configuration>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐