2016-10-17 7 views
0

xmlファイルの変更によって変更されたXMLファイルがデフォルト値で上書きされるため、InstallShield Basic MSIプロジェクトにXMLファイルの値を再読み込みしようとしています。 。 「システム検索」画面に移動すると、システム検索ウィザードで新しいXMLファイルの値が追加されます。次に、exe.configファイルのファイル名(以下の内容)を入力し、ファイルがインストールされている場所へのフルパスを指定し、XPathの場合は「/ configuration/appSettings/add [@ key = "UiServiceIpAddress"]」と入力します。私は属性 "value"の値を検索し、有効なプロパティに値を格納するように指示します。InstallShield Basic MSIシステム検索がxmlファイルに対して実行されない

このmsiを実行すると、何もしないように見えます。私のMSIログ(下の出力)を見ると、AppSearchの実行を見ることができますが、xml appsearchについては言及していません。グーグルで少し調べた後、MSIで検証を実行する方法を理解しました。 「無効なファイル名;テーブル:署名、列ファイル名、キー:NewSignature1」というエラーが表示されます。ファイル名は私にとって有効です。だから私は困惑している。

MSIログ出力:

Action start 13:21:48: AppSearch. 
AppSearch: Property: IEXPLORE, Signature: IEXPLORE_REG.C8C0673E_50E5_4AC4_817B_C0E4C4466990 
MSI (c) (80:B0) [13:21:48:597]: Note: 1: 2262 2: Signature 3: -2147287038 
MSI (c) (80:B0) [13:21:48:597]: WIN64DUALFOLDERS: 'C:\Program Files (x86)\' will substitute 17 characters in 'C:\Program Files\Internet Explorer\IEXPLORE.EXE' folder path. (mask argument = 0, the folder pair's iSwapAttrib member = 0). 
MSI (c) (80:B0) [13:21:48:597]: PROPERTY CHANGE: Adding IEXPLORE property. Its value is 'C:\Program Files (x86)\Internet Explorer\IEXPLORE.EXE'. 
AppSearch: Property: DOTNETVERSION40FULL, Signature: DotNet40Full 
MSI (c) (80:B0) [13:21:48:597]: Note: 1: 2262 2: Signature 3: -2147287038 
MSI (c) (80:B0) [13:21:48:597]: PROPERTY CHANGE: Adding DOTNETVERSION40FULL property. Its value is '#1'. 
Action ended 13:21:48: AppSearch. Return value 1. 

XMLファイル:

<?xml version="1.0"?> 
<configuration> 
    <appSettings> 
     <add value="127.0.0.1" key="UiServiceIpAddress"></add> 
    </appSettings> 
</configuration> 

答えて

0

XMLファイルから値を抽出するWindows InstallerのAppSearchでは何もありません。説明のカップルがあります:

  1. InstallShieldは、Windowsインストーラの外で機能を追加しましたので、そこに彼らはこれを行うために追加の内部カスタムアクションであってもよく、それはどこか他のあなたのログに表示されます。

  2. これは、IniLocatorの機能と混同されています。この機能は、標準のINIファイル(Xmlファイルではありません)から値を抽出します。

もう1つの答えが指摘しているように、1.理由があります。ログでISXmlAppSearchを検索します。

1

私は、AppSearchを使用してXML値を検索し、上記のXPATH表記法を使用してプロパティに割り当てることを推測します。

MSIのICE検証では、appsettings.xmlファイルのフォーマットが不適切なファイル名が表示されます。あなたがする必要があるのは、あなたのファイル名にショートネーム(8.3)形式を提供することだけです。

例:ファイル名= appSettings.xml

ファイル名columnValue = APPSET〜1.XML | appsettings.xml

フィルはMSI自体がXMLファイルの検索をサポートしていないことを示すには正しく、 InstallShieldはこれを管理するカスタムアクションを追加しました。

'ISXmlAppSearch'を検索すると結果が表示されます。

これは、xmlファイルが見つからないインストーラのログファイルの結果です。

Action start 14:09:17: ISXmlAppSearch. 
InstallShield 14:09:18: Searching for the contents of the XML Element using the Element '//brand'. 
InstallShield 14:09:18: The location of the XML file, stored in the Property 'SYSTEMSETTINGS1', is currently a NULL value. It appears that the AppSearch did not find the file. 
InstallShield 14:09:18: Searching for the contents of the XML Element using the Element '//maincomputer'. 
InstallShield 14:09:18: The location of the XML file, stored in the Property 'SYSTEMSETTINGS', is currently a NULL value. It appears that the AppSearch did not find the file. 
MSI (s) (F0:1C) [14:09:18:199]: Doing action: LaunchConditions 
Action ended 14:09:18: ISXmlAppSearch. Return value 1. 

そして、ここでは別のあなたが何を期待するのアイデアを持っているだけので、結果を示している。

Action start 9:28:24: ISXmlAppSearch. 
MSI (s) (D0!0C) [09:28:24:539]: PROPERTY CHANGE: Adding ISMEDFX property. Its value is 'ac'. 
InstallShield 9:28:24: Searching for the contents of the XML Element using the Element '//brand'. 
InstallShield 9:28:24: Success! The ISXmlAppSearch action set the value of the associated property to the following value: 'ac'. 
MSI (s) (D0!0C) [09:28:24:539]: PROPERTY CHANGE: Modifying MAINCOMPUTER property. Its current value is 'YES'. Its new value: 'yes'. 
InstallShield 9:28:24: Searching for the contents of the XML Element using the Element '//maincomputer'. 
InstallShield 9:28:24: Success! The ISXmlAppSearch action set the value of the associated property to the following value: 'yes'. 
MSI (s) (D0!0C) [09:28:24:539]: PROPERTY CHANGE: Adding STORAGELOCATIONROOT property. Its value is 'p:\program files (x86)\amazing charts\'. 
InstallShield 9:28:24: Searching for the contents of the XML Element using the Element '//storagelocationroot'. 
InstallShield 9:28:24: Success! The ISXmlAppSearch action set the value of the associated property to the following value: 'p:\program files (x86)\amazing charts\'. 
MSI (s) (D0:D8) [09:28:24:555]: Skipping action: MedFxSet (condition is false) 
MSI (s) (D0:D8) [09:28:24:555]: Doing action: LaunchConditions 
Action ended 9:28:24: ISXmlAppSearch. Return value 1. 
  • InstallShieldウィザードを使用してこれを設定するには、私は新しいXMLを作成しましたタイプシステム検索。

    • 私の場合、SYSTEM〜1.XML | systemsettings.xmlというファイル名を指定しました。 注:ここで短い名前を指定すると、ウィザードで無効なファイル名エラーが発生します。有効なファイル名があることを確認するには、直接編集を使用する必要があります。

    • 「Look In」の値を「以前の検索で見つかったパス:」に設定しましたが、実際のパスである限り、何でも指定できます。あなたのINSTALLDIRプロパティが存在しない可能性があるので、これがコストを初期化する前に完了したと思います。そのため、インストールディレクトリのAppSearchを行い、以前の検索オプションを使用しています。

    • XMLエレメントにXPathを指定しました。私はこれで欲求不満を覚えています。最終的には、特にxmlファイル内で一意である場合、私が特定する必要があるのは私の特定の要素です。例えば//親要素/ブランドではなくブランド

    • 「コンテンツの要素」に「探す」オプションを選択し、後で使用できるプロパティに値を格納しました。

手動ダイレクトエディタ開いているファイル名を変更します。 Signatureテーブルに移動します エントリを検索し、FileName値を変更します。

関連する問題