6

重複の可能性:
Wix - 権限に基づいてインストール フォルダを変更する

さて、この質問は、 allusers と single user に対して異なるレジストリ キーを取得するにはどうすればよいですかの問題を解決しようとしていたときに発生しました。

基本的に私がやろうとしていることは次のとおりです。

if ALLUSERS=1 then
   set InstallDir to Property1
else 
   set InstallDir to Property2

これを行うことを知っている人はいますか?

4

2 に答える 2

6

わかりました、ちょうど終わりました。私のwxsは次のようになります:

<CustomAction Id="PerUserInstall"    Property="InstallDir" Value="[INSTALLDIR1]" Execute="immediate" />
<CustomAction Id="PerMachineInstall" Property="InstallDir" Value="[INSTALLDIR2]" Execute="immediate" /> 
<InstallExecuteSequence>
    <Custom Action="PerUserInstall"    After="AppSearch">ALLUSERS="" OR (ALLUSERS=2 AND (NOT Privileged))</Custom>      
    <Custom Action="PerMachineInstall" After="AppSearch">ALLUSERS=1  OR (ALLUSERS=2 AND Privileged)</Custom>
</InstallExecuteSequence>

リンクをありがとう@shambulator。レジストリ検索の直後にアクションを実行するため、After="AppSearch"代わりに使用することに注意してください。Before="CostFinalize"

于 2012-08-14T10:02:40.713 に答える
3

多くの WiX 要素は、内部テキストとして条件を取ります。XML であるため、頻繁に特殊文字をエスケープする必要があります。条件がどのように機能するかについてのポインタは次のとおりです。

条件文の構文

また、なぜ INSTALLDIR1 と INSTALLDIR2 があるのか​​わかりません。あなたのコードの残りの部分を見なければ、あなたはそれを正しく行っていないと言わざるを得ません。INSTALLDIR を 1 つ用意し、それをユーザーごとまたはマシンごとに異なる場所に設定する必要があります。この件に関する優れたブログ記事は次のとおりです。

Windows 7 でのユーザーごとまたはマシンごとのインストール コンテキスト用の単一パッケージの作成

個人的には、ユーザーごとのインストールに煩わされることはめったにありません。それらは、「バイラル」(ウイルスではなく、ソーシャル メディアを通じて非公開ユーザーに広がる) アプリケーション以外にはほとんど価値のない苦痛です。

于 2012-08-14T11:21:11.743 に答える