程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 使用Visual Studio生成安裝程序並設定連接字符串及其他自定義操作

使用Visual Studio生成安裝程序並設定連接字符串及其他自定義操作

編輯:關於C#

應該很多人都有遇到這個問題.現在給個完整的解決方案.

1.添加一個安裝項目(當然你的其他項目應該都已經OK了.現在我們已經做好了一個WinUI的項目.記得 要建立App.config文件,而且要有連接字符串的配置節存在.不然之後會出錯.因為我沒做錯誤處理.)

目前的App.config文件內容,connectionString值為空,需要用戶在安裝時輸入.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <connectionStrings>
     <add name="ConnectionString" connectionString="" providerName="System.Data.SqlClient"  />
   </connectionStrings>
</configuration>

2.在安裝項目中添加項目輸出,如UI層,業務邏輯層,數據操作層,實體層,公共層等項目輸出.

3.選中左面的用戶桌面,在右邊右鍵創建新的快捷方式.

4.生成安裝項目,就可以生成安裝程序了.不過還沒完呢.

5.安裝過程中需要用戶輸入連接數據庫的信息或建立數據庫等操作.需要對安裝過程進行定制.在用戶 界面視圖中進行.

6.添加讓用戶輸入信息的對話框

7. 修改文本框的屬性.最多可以有4個文本框.定義窗口的標題(BannerText),窗口的描述信息 (BodyText),各文本框標簽的值 (Edit_Label),對應的屬性名(Edit_Property),默認值(Edit_Value),是否 可見(Edit_Visible)等屬性.

8.要新建一個類庫項目來實現定制安裝的功能.

9.建立功能實現類

10.代碼如下(請注意看代碼注釋):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Configuration;
using System.Xml;
using System.IO;

namespace SetSetup
{
     /// <summary>
     /// 繼承安裝類
     /// www.szitr.com
     /// </summary>
     [RunInstaller(true)]
     public partial class SetSqlConStr : Installer
     {
         public SetSqlConStr()
         {
             InitializeComponent();
         }
         /// <summary>
         /// 重寫基類的安裝方法
         /// </summary>
         /// <param name="stateSaver"></param>
         public override void Install(System.Collections.IDictionary  stateSaver)
         {
             base.Install(stateSaver);
             //得到用戶輸入的參數
             //參數來自於後面 第 14 步 自定義操作的參數
             //自定義操作參數的屬性CustomActionData:/SqlServerIP= [SQLSERVER_NAME] /DataBase=[DATABASE_NAME] /UserName=[USERNAME] /Password=[PASSWORD]  /TargetDir="[TARGETDIR]\"
             //中括號中的就是之前各文本框的Edit_Property值.最後一個TARGETDIR是 安裝路徑,注意後面還有個反斜桿
             string sqlServerIP = this.Context.Parameters ["SqlServerIP"];
             string database = this.Context.Parameters["DataBase"];
             string userName = this.Context.Parameters["UserName"];
             string password = this.Context.Parameters["Password"];
             string targetdir = this.Context.Parameters["TargetDir"];
             //這裡寫你要執行的代碼
             //組合連接字符串
             string conString = String.Format("Data Source={0};Initial  Catalog={1};User ID={2};Password={3};Persist Security Info=True", sqlServerIP,  database, userName, password);
             //更新連接字串設定值,WinUI.exe.config 要改成你設定檔的名稱
             UpdateConConfig("ConnectionString", conString, targetdir +  "WinUI.exe.config");
         }

         /// <summary>
         /// 修改設定檔連接字符串的值
         /// </summary>
         /// <param name="conName">連接字符串名稱</param>
         /// <param name="conString">連接字符串</param>
         /// <param name="configfilePath">設定檔路徑及名稱 </param>
         public static void UpdateConConfig(string conName, string  conString,string configfilePath)
         {
             XmlDocument xmlDoc = new XmlDocument();
             //讀取設定檔
             xmlDoc.Load(configfilePath);
             //取得連接字符串的節點
             XmlNode xmlNode = xmlDoc.SelectSingleNode ("configuration/connectionStrings/add[@name='" + conName + "']");
             //修改連接字符串
             xmlNode.Attributes["connectionString"].InnerText =  conString;
             //保存
             xmlDoc.Save(configfilePath);
         }

         public override void Uninstall(System.Collections.IDictionary  savedState)
         {
             base.Uninstall(savedState);
         }
         public override void Commit(System.Collections.IDictionary  savedState)
         {
             base.Commit(savedState);
         }
         public override void Rollback(System.Collections.IDictionary  savedState)
         {
             base.Rollback(savedState);
         }
     }
}

11.回到安裝項目.打開自定義操作視圖

12.在安裝中添加自定義操作

13.添加剛剛第9步所建立的項目的主輸出

14.修改此自定義操作的CustomActionData屬性

CustomActionData:/SqlServerIP=[SQLSERVER_NAME] /DataBase=[DATABASE_NAME] /UserName= [USERNAME] /Password=[PASSWORD] /TargetDir="[TARGETDIR]\"

15.重新生成一次.再執行安裝程序看看.已經OK啦!

最後看看我們的設定檔內容

<?xml version="1.0" encoding="utf-8"?>
<configuration>
   <connectionStrings>
     <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" />
   </connectionStrings>
</configuration>

成功!

希望對各位有幫助.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved