2011-07-21 63 views
2

我必須在使用用戶輸入進行安裝時修改配置文件,並使用installshield 2011基本msi項目。我想這可以通過更改xml文件來完成,所以我創建了一個包含這些用戶輸入的編輯字段的對話框,並將這些字段關聯到屬性,但是不清楚如何將屬性與我的配置中的值相關聯。有什麼辦法做到這一點?這是我的配置文件的結構:在使用installshield 2011進行安裝時修改配置文件

<configuration> 
    <appSettings> 
     <add key="Color" value=""></add> 
     <add key="Shape" value=""></add> 
    </appSettings> 
<configuration> 

用戶必須設置顏色和形狀的值。也許,使用其他類型的項目會更好嗎?謝謝。

回答

4

我總是用文本文件的更改,並設置配置文件如下

<configuration> 
    <appSettings> 
     <add key="Color" value="">%color%</add> 
     <add key="Shape" value="">%shape%</add> 
    </appSettings> 
<configuration> 

然後將文本替換搜索的* .config 與替換文本%顏色%和%形狀%來自對話框的輸入。

希望這有助於

+0

我非常不鼓勵任何人做查找/ XML文件替換。它非常脆弱。如果示例中的文件更新爲不同節點(如)的%color%或%shape%,則事情將更加複雜。 – thekbb

+2

Installshield不會使這個過程變得簡單,而且這可能是一個可行的選擇。 – StingyJack

3

InstallShield XML更改使用XPath語句。需要一點時間才能習慣這樣的嘗試。

在「XML文件更改」中,選擇「XML文件」並右鍵單擊「新建文件」。在常規表上,選擇要操縱的目錄和文件名以及正在安裝的導致更改發生的功能。

右鍵單擊該XML文件並選擇添加預定義元素| .NET配置文件| Web配置文件|應用程序設置|加。

你會看到的InstallShield撰寫的查詢:

/配置/的appSettings /添加[@鍵= 「鍵」 和@值= 「值」]

這告訴MSI獲得參考添加節點是appSettings節點的子節點,該節點是配置節點的子節點,其中key屬性等於「key」的字面值,value屬性等於「value」的字面值。您實際上想要調整此XPath語句以基於@ Key =「Color」進行比較,並忽略value屬性。一旦它引用了這個節點,你就可以告訴它創建/設置屬性內容的「value」屬性的值。請記住,在MSI中,[]符號返回指定屬性的值。 ([SOMEPROP]會返回SOMEPROP的值)。

下面是一些閱讀材料:

http://kb.flexerasoftware.com/doc/Helpnet/installshield14helplib/XMLFileChangesView.htm

如果所有這些XML東西太難了,你最近的InstallShield的版本也有一個文本文件的更改這是可以做到SteveLovell提到的方式。

相關問題