2011-10-21 32 views
2

我在客戶端安裝c#windows應用程序。在應用程序中,我需要一個連接字符串。如何在安裝時進行配置。另外我想用我的應用程序安裝程序打包sql express安裝程序和.Net Framework安裝程序。這可能嗎?如何在安裝時指定sql server的connectionstring

+0

你正在使用什麼樣的安裝軟件? – Fischermaen

回答

4

如果您使用Visual Studio安裝程序,則可以將自定義頁面添加到安裝程序並添加處理該自定義頁面結果的自定義操作。例如,在VS2010專業:

  1. 創建一個Visual Studio安裝安裝項目
  2. 項目輸出添加到安裝程序,添加快捷方式和其他方式配置安裝到自己的喜好。 (即現在假設它不會爲您配置連接字符串,並按您的要求配置其他所有配置。現在提交您選擇的源代碼控制,以便您在遇到問題時再次嘗試
  3. 右鍵單擊解決方案資源管理器中的安裝項目,然後選擇視圖>用戶界面
  4. 右鍵單擊「開始」(在步驟3的結果中出現的「用戶界面」窗口中)並選擇「添加對話框」
  5. 選擇「文本框(A)」,「文本框(B)」或「文本框(C)」中的一個,然後單擊確定(據我所知,選擇哪種A/B/C無關緊要)。在「用戶界面」窗口
  6. 點擊「文本框(A)」,並將其拖到了上述「確認安裝」,因爲你可能想在連接字符串對話框出現之前了「我們準備安裝,你確定「窗口。
  7. 上的「文本框(A)」單擊鼠標右鍵,選擇「屬性窗口」
  8. 自定義屬性(他們會出現在下面坐/旁邊的解決方案資源管理器的「屬性」選項卡:
    1. 集Edit2Visible,Edit3Visible和Edit4Visible假
    2. Edit1Label到「連接字符串:」(或您選擇的措辭)
    3. Edit1Property爲「SQL_CONNECTION_STRING」(或您選擇的名稱 - 這是名稱自定義操作將參考)
  9. 構建並運行安裝程序以確保它仍然正確安裝。

您需要做的下一件事是編寫一個自定義操作來將連接字符串存儲到app.config文件中。問題Setup App.Config As Custom Action in Setup Project涵蓋了它,所以我會留給你閱讀並利用它。

據我所知沒有辦法嵌入一個Visual Studio安裝裏面的依賴關係,但我建議hiving它作爲一個問題,你真的在​​你的問題問題=)

+0

對不起,但你介意給我一個更好的鏈接第二部分。如何?\在哪裏?我寫代碼掛鉤到你添加的「用戶界面」上。 – Seabizkit

1

Rob的回答非常有用,可以幫助您獲得2/3的方式。我只是花了一些時間找到我的方式的方式,最終的1/3,所以我希望這篇文章可以幫助你找到答案的速度比我做的事:

這MSDN文章可以幫助解釋瞭如何創建一個自定義操作: https://msdn.microsoft.com/en-us/library/d9k65z2d(v=vs.100).aspx

爲了將其結合在一起,爲MSDN文章中所述,一旦你創建的自定義操作項目,則需要將其添加爲一個行動部署項目:

  1. 右對齊點擊您的部署項目並選擇查看 - >自定義操作

  2. 右鍵單擊安裝並添加自定義操作

  3. 雙擊應用程序文件夾
  4. 點擊Add Output,並選擇您的自定義操作項目輸出
  5. 上提交併重複(右鍵單擊「添加自定義行動「,選擇您的自定義行動項目的輸出)。如果需要,請重複回滾和卸載。

要鏈接的安裝嚮導,你的代碼輸入的數據: 對於上述定義的每個自定義操作(安裝文件夾下,文件夾提交等),選擇自定義操作項目。在「屬性」窗口中填充CustomActionData。例如,我在我的用戶界面中指定了一些文本框字段,使其具有Edit1Property和Edit2Property值CONFIGURATION_SERVER和DATABASE_NAME。爲了讓他們提供給我的自定義操作代碼,我CustomActionData設置爲: /cfgServer = [CONFIGURATION_SERVER]/DBNAME = [DATABASE_NAME]

然後,在我的代碼,我可以參考獲取值: 上下文.Parameters [「cfgServer」] 或 Context.Parameters [「dbName」] (均返回包含用戶輸入內容的字符串)。

我的代碼在安裝過程中運行,並且我編寫了一個方法來修改存儲應用程序設置的.CONFIG文件以使用用戶指定的值。

0

Robs的答案是正確的,那麼你必須將自定義操作數據傳遞給自定義操作的主要輸出。這是安裝程序的一部分。現在在安裝程序類中重寫安裝程序類的BeforeInstall方法。然後獲取通過GetExecutingAssembly()方法執行文件的位置。獲得正在執行的彙編後,您需要application.exe.config文件通過File.ReadAllText讀取此文件,並使用字符串替換方法更改連接字符串參數,但必須添加唯一您的默認連接字符串中的佔位符用於替換此佔位符。然後再次使用File.WriteAllText方法寫入此文件。這將在安裝時成功更改您的連接字符串,並且您的應用程序將以此運行。

相關問題