除此之外,我的安裝程序類沒有什麼特別之處。它安裝Windows服務。但是現在我需要提示用戶輸入一些信息並將信息傳遞給安裝程序類,以便安裝程序類可以更新app.config。使用自定義操作的Visual Studio 2010 MSI項目和服務安裝程序類
我添加了三個額外的頁到默認用戶界面:
- 文本框(A)
- 文本框(B)
- 文本框(C)
變量:
- 在A上,我使用的是EDITA1,其餘都是隱形的
- 在B,我使用EDITB1,其餘的都看不見
- 在C,我使用EDITC1,其餘的都看不見
在「安裝」自定義操作,我有屬性設置這樣的:
- 參數:空白
- 條件:空白
- CustomActionData:/ MYPARAM1 = [EDITA1]/MYPARAM2 = [EDITB1]/MYPARAM3 = [EDITC1] 個
- InstallerClass:真
在安裝程序類,安裝被重寫
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
// This is to display the Parameters
// It comes up blank. No Parameters.
System.Text.StringBuilder sb = new System.Text.StringBuilder();
foreach (string s in Context.Parameters.Keys)
{
sb.Append(s);
sb.Append(":");
sb.AppendLine(Context.Parameters[s]);
}
//throw new InstallException(sb.ToString());
//This returns TRUE.
//throw new InstallException(Context.Parameters.ContainsKey("MYPARAM1").ToString());
string x= Context.Parameters["MYPARAM1"];
if (string.IsNullOrEmpty(x))
{
throw new InstallException("Missing parameter 'MYPARAM1'");
}
<snip>
}
當應用程序運行時,MYPARAM1是空的,所以我認爲在年底InstallException。
我在安裝的頂部添加了兩個測試代碼塊。第一個,創建一個字符串,其中包含應該在命令行中輸入的所有參數。我根本沒有得到我的參數。第二個塊報告「TRUE」 - 表示關鍵字「MYPARAM1」在命令行上。第一和第二塊不同意。怎麼會這樣?
作爲一個實驗,我嘗試將字符串更改爲/ MYPARAM1而不是MYPARAM1。這沒有幫助。
謝謝!我發現了這樣的問題。 – 010110110101