2

コマンドラインパラメータが設定されているかどうかにかかわらず、wix のインストール中に条件付きでファイルをインストールしたい

たとえば、DEBUG フラグが設定されている場合にのみインストールされる次のファイルがあります。

    <Component Id="file.pdb" Guid="SOME-GUID">
       <Condition>DEBUG</Condition>
       <File Id="file.pdb" Source="file.pdb" KeyPath="yes" Vital="no" />
    </Component>

DEBUG プロパティを追加し、コマンド ラインから読み込みました。ファイルは決してインストールされませんが、なぜ私は困惑していますか?

4

1 に答える 1

3

問題を解決しました。以下は私が間違っていたこととそれを解決するために私がしたことの説明です

インストーラー(.msi)を作成し、次のcmdlineargsを使用して起動しました

msiexec -i prog.msi DEBUGPROPERTY = True

このプロパティが設定されているかどうかに応じてインストールされるコンポーネントを含むいくつかのマージモジュールがあり、そのようにプロパティが注入されていました...

<Merge
    Id="SomeID"
    Language="1033"
    SourceFile="Module.msm"
    DiskId="1">
    <ConfigurationData
      Name="debugProperty"
      Value="[DEBUGPROPERTY]" />

私が欠けていたのはマージモジュール(.msm)にありました私は次のコードが必要でした

    <Configuration Name='debugProperty' Format='Text' DefaultValue='[DEBUGPROPERTY]'/>
    <Substitution Table='CustomAction' Row='setDebugProperty' Column='Target' Value='[=debugProperty]'/>
    <CustomAction Id='setDebugProperty' Property='DEBUGPROPERTY' Value='[DEBUGPROPERTY]'/>

    <InstallExecuteSequence>
            <Custom Action='setDebugProperty' Before="LaunchConditions">1</Custom>
    </InstallExecuteSequence>

これにより、このモジュール内のプロパティDEBUGPROPERTYにアクセスできるようになり、インストール時にファイルがインストールされたかどうかを制限できるようになりました。

<Component Id="File.pdb" Guid="SOME-GUID">
    <Condition>DEBUGPROPERTY</Condition>
    <File Id="File.pdb" Source="File.pdb" KeyPath="yes" Vital="no" />
</Component>

これが機能するようになり、この引数を含めると、インストール中に.pdbファイルをインストールできるようになります。

于 2012-05-14T16:25:14.463 に答える