2

ALLUSERSが1の場合に設定するプロパティがいくつかあります。

<CustomAction Id="CA1" Property="InstallDir" Value="[MYINSTALLDIR]" Execute="immediate" />
<CustomAction Id="CA2" Property="Version" Value="2.0" Execute="immediate" />
<CustomAction Id="CA3" Property="x" Value="x" Execute="immediate" />
<CustomAction Id="CA4" ... />
<CustomAction Id="CA5" ... />

<InstallExecuteSequence>
    <Custom Action="CA1" After="AppSearch">ALLUSERS=1</Custom>      
    <Custom Action="CA2" After="AppSearch">ALLUSERS=1</Custom>      
    <Custom Action="CA3" After="AppSearch">ALLUSERS=1</Custom>      
    <Custom Action="CA4" After="AppSearch">ALLUSERS=1</Custom>      
    <Custom Action="CA5" After="AppSearch">ALLUSERS=1</Custom>      
</InstallExecuteSequence>

これは機能していますが、大量のCAや愚かなIDの代わりに、次のようなもっと簡潔な方法があるのではないかと思います。

<CustomAction Id="CA" Property="InstallDir=[MYINSTALLDIR]; Version=2.0; x=x; y=y; z=z ..." Execute="immediate" />

<InstallExecuteSequence>
    <Custom Action="CA" After="AppSearch">ALLUSERS=1</Custom>      
</InstallExecuteSequence>

これは可能ですか?

4

1 に答える 1

4

MsiSetProperty()を何度も呼び出すC++カスタムアクションを作成できます。ただし、技術的には失敗のリスクが高くなります。一度設定すると、セットプロパティCAの束は通常それほどひどいものではありません。

于 2012-08-15T02:46:07.123 に答える