加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

winform程序自定义打包步骤

发布时间:2020-12-12 15:28:30 所属栏目:MsSql教程 来源:网络整理
导读:应该很多人都有遇到这个问题.现在给个完整的解决方案. 1.添加一个安装项目(当然你的其他项目应该都已经OK了.现在我们已经做好了一个WinUI的项目.记得要建立App.config文件,而且要有连接字符串的配置节存在.不然之后会出错.因为我没做错误处理.) 目前的App.co

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

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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读