0

次の問題があります。新しいプロパティを定義します。

<Property Id="TEMP_DIR" Secure="yes" >
    <RegistrySearch Id="TEMP_DIR" Root="HKLM" Key="SOFTWARE\$(Company)" Name="InstallDir" Type="directory"></RegistrySearch>
</Property>

次に、新しいコンポーネントを定義します。

<Component Id="PerformAction" Guid="E2E4E3E5-FBEC-4051-B47B-9347B78105C2">
   <Condition><![CDATA[TEMP_DIR<>INSTALLDIR]]></Condition>
       …
</Component>

通常のインストールでは、プロパティは適切に割り当てられ、条件は正常に機能します。

ただし、サイレント インストールでは、条件が false である必要がある場合でも、コンポーネントは常にインストールされます。

詳細ログでは、両方のプロパティが正しいようです…</p>

コメント:

さらに調査した後、次のリンクによると:

msdn.microsoft.com/en-us/library/aa368007%28VS.85%29.aspx

INSTALLDIR は CostFinialize アクションの後にのみ初期化され、そのアクション中に条件フィールドが有効または無効になることを理解しました。これは、その段階でプロパティが空であることを意味します...

プロパティを以前に初期化する方法について何か考えはありますか?

4

1 に答える 1

0

INSTALLDIRプロパティは、サイレントインストールでは実行されないUIシーケンスのどこかでユーザーの入力に基づいて設定されていると思われます。その場合は、INSTALLDIRの値をmsiexec.exeのパラメーターとして渡すことをお勧めします。

于 2010-11-25T09:52:09.433 に答える