4

WiX インストーラーで INI ファイルから値を読み取りたいです。IniFileSearch を使用しようとしましたが、これは INI ファイルまたは INI ファイルで指定されたパスを探します (ドキュメントは明確ではありません)。INIファイルから値を読み取りません。

これを行うにはカスタムアクションが必要ですか? もしそうなら、人々は何を提案しますか?ただし、WiX にこれがない場合は非常に奇妙に思えます!

私が使用しているコード:

<Property Id="SP">
    <IniFileSearch Id="SearchSPVersion" Name="sp.ini" Section="ServicePack"
    Key="Version" Type="raw">
        <DirectorySearch Id="SPIniFilePath" Path="[CFGPATH]">
            <FileSearch Id="SPIniFile" Name="sp.ini"/>
        </DirectorySearch>
    </IniFileSearch>
</Property>

INI ファイル:

[ServicePack] 
Version=1 

ディレクトリとファイルの検索 (「名前」にフル パスを使用) を使用して、または使用せずに試し、type = "raw"、"file"、および "directory" を試しました。

4

3 に答える 3

4

これが古いスレッドであることは知っていますが、私が経験した同じ痛みから誰かを救いたいと思っていました....

これは、少なくとも Wix3.5 および 3.6 ベータ版での私のテストでは、ini ファイルから値を読み取ります。すなわち

<Property Id="MY_PROPERTY">
        <IniFileSearch Id="myIniSearch" Name="myConfigFile.ini" Section="section1" Key="name" Type="raw" />
    </Property>

    <Condition Message="myconfigfile not def.">MY_PROPERTY</Condition>

対応する ini ファイルを C:\windows\myConfigFile.ini (Windows 7) に保存した場合:

[section1]
name=testing

しかし、ini ファイルがUTF8 ではなくANSIでなければならないことに気付く前に、なぜこれが機能しないように見えるのかを理解しようとして何時間も費やしました! ANSI エンコードされた .ini ファイルが正しい場所、つまり c:\Windows\some.ini にあれば機能します。

UTF8 ファイルは読み取られず、エラーは発生せず、プロパティの割り当ては行われません。

于 2011-12-23T11:49:28.020 に答える
4

Windows インストーラのドキュメントには、.ini ファイルがデフォルトの Microsoft Windows ディレクトリに存在する必要があると記載されています。

FileSearch と DirectorySearch は有効な WiX の子であるため、少し混乱しますが、これはINI ファイル自体で指定されたファイルまたはディレクトリを検索するためのものだと思います。INI ファイル内で検索できる 3 種類の値は、ディレクトリ、ファイル、および raw です。

これは、WiX ではなく、Windows インストーラーの制限です。INI ファイルを読み取るための Microsoft インターフェイス (例: GetPrivateProfileString ) は、パスが指定されていない場合、Windows フォルダーを検索します。Windows インストーラー チームは、物事を単純化せず、動的パスを許可しないことで、Windows フォルダー内の INI ファイルのみをサポートすることを決定したと思います。

于 2009-07-29T02:19:16.167 に答える
0

DTF カスタム アクションでこれを試してください: C# の INI ファイル リーダー

于 2009-07-29T15:24:05.200 に答える