2011-07-21 11 views
2

ユーザ入力をインストールするときに設定ファイルを変更する必要があり、私はinstallshield 2011の基本msiプロジェクトを使用しています。私はこれはXMLファイルの変更で行うことができると思いますので、これらのユーザー入力用のフィールドを編集してダイアログを作成し、フィールドをプロパティに関連付けましたが、プロパティを自分の設定の値と関連付ける方法が明確ではありません。これを行う方法は何ですか?これは私の設定ファイルの構造です:installshield 2011でインストールするときに設定ファイルを変更する

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

ユーザは、色と形状の値を設定する必要があります。たぶん、それは他の種類のプロジェクトを使用する方が良いですか?ありがとう。

私は常に、テキストファイルの変更を使用し、その後

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

テキストは* .configを を検索したテキスト%色%と%形状%を置き換えるために置き換える設定を次のように設定ファイルを設定

答えて

4

ダイアログボックスからの入力。

希望これは、XPathステートメントを使用しています

+0

私は非常にxmlファイルで検索/置換を行うことから誰を阻止。それは非常に脆いです。この例のファイルが、などの異なるノードの%color%または%shape%を持つように更新されていると、事態はさらに複雑になります。 – thekbb

+2

Installshieldはこのプロセスを簡単にはしません。これは実行可能な代替方法です。 – StingyJack

3

のInstallShield XMLの変更をすることができます。このようなことを試してみるのに少し時間がかかります。

[XMLファイルの変更]で[XMLファイル]を選択し、[新しいファイル]を右クリックします。一般テーブルで、操作するディレクトリとファイル名、および変更が発生するインストールされている機能を選択します。

XMLファイルを右クリックし、[Add Predefined Element]を選択します。 .NET構成ファイル| Web構成ファイル|アプリケーション設定|追加します。

あなたはInstallShieldはのクエリ執筆わかります

/設定を/のappSettings /これは、参照を取得するためにMSIを伝え

[キー= "キー" @と@値= "値"]を追加key属性が "key"のリテラルと等しく、value属性が "value"のリテラルと等しいコンフィグレーションノードの子であるappSettingsノードの子である追加ノードに送信する。実際には、このXPath文を微調整して、@ Key = "Color"に基づいて比較し、value属性を無視する必要があります。このノードへの参照を取得したら、プロパティの内容に「値」属性の値を作成/設定するように指示できます。 MSIでは、[]シンボルは指定されたプロパティの値を返します。 ([SOMEPROP]はSOMEPROPの値を返します)。

このXMLもののすべてがあなたのためにあまりにも難しい場合にはhttp://kb.flexerasoftware.com/doc/Helpnet/installshield14helplib/XMLFileChangesView.htm

は、のInstallShieldの最近のバージョンもSteveLovellが言及した方法で行うことができるテキストファイルの変更を持っている:

は、ここではいくつかの読み物です。

関連する問題