- Bundle の子要素にVariablesタグ追加
<Bundle ...> <Variable Name="TRANSFORMS" Value=":ja-JP.mst" Type="string" bal:Overridable="yes"/>
- Bundleエンジンに変数を追加する。
Name:変数名。
Value:初期値。この例では必ずBootstarpperで設定するので、Valueは別の値でもよい。 - bal:Overridable="yes": Bootstarpperで変更できるように"yes"に設定する。
- bal namespace が認識されない場合はWixタグに次のxmlnsを追加
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
- MsiPackage 要素変更
<Chain>
<MsiPackage ....>
<MsiProperty Name="TRANSFORMS" Value="[TRANSFORMS]" />
</MsiPackage>
</Chain>
Name:msi 作成プロジェクトの Product.wxsのPropertyタグのIdと同じ名前。 msiexecの起動パラメータとして使われる。
<Property Id="TRANSFORMS" Value="Default" />
Value="[TRANSFORMS]":BundleのVariableのTRANSFORMSの値で置換される。
次のようなコードで Variable TRANSFORMS の値をセットする。
if (CultureInfo.CurrentUICulture.TwoLetterISOLanguageName == "ja")
{
this.Engine.StringVariables["TRANSFORMS"] = ":ja-JP.mst";
}
else
{
this.Engine.StringVariables["TRANSFORMS"] = "";
}
TRANSFORMS=":ja-JP.mst"、またはTRANSFORMS=""が追加される。
Bundleのログに、次のように書き出される。
- Installの場合:
Applying execute package: MySetup.msi, action: Install, path: C:\Users\UserName\AppData\Local\Package Cache\{GUID}v1.0.1\MyAppSetup.msi, arguments: ' ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL="7" TRANSFORMS=":ja-JP.mst"
- Uninstallの場合:
Applying execute package: MySetup.msi, action: Uninstall, path: (null), arguments: ' ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL="7" TRANSFORMS=":ja-JP.mst"
Valueが空文字の場合は TRANSFORMS="" となる。
TRANSFORMSと同様にmsiexecのパラメータ UILevel、CLIENTUILEVEL を設定してみたが、Bundleが CLIENTUILEVEL=3 (サイレント)をその後ろに付けるため有効にならない。アンインストール実行確認ダイアログや、アンインストール完了時のメッセージ表示などのUIはBootstarpperで用意する必要がある。
- アンインストール時のmsiexecのログ
ARPSYSTEMCOMPONENT=1 MSIFASTINSTALL=7 TRANSFORMS=:ja-JP.mst UILevel=5 CLIENTUILEVEL=5 REBOOT=ReallySuppress IGNOREDEPENDENCIES=ALL REMOVE=ALL CURRENTDIRECTORY=C:\WINDOWS\system32 CLIENTUILEVEL=3 MSICLIENTUSESEXTERNALUI=1 CLIENTPROCESSID=6296
- UILevel=5 CLIENTUILEVEL=5 はMsiPropertyで設定したもの。burnが設定するCLIENTUILEVEL=3が有効になる。
VisualStudio 2017 Community & WiX tools & WiX Edit によるWindowsアプリ インストーラ(msi)作成
WiX toolset msi ダイアログ多国語対応
dotNetInstallerによるシンプルBootstarpper作成
WiX toolsetのBootstarpperを試してみた(1)
WiX toolsetのBootstarpperを試してみた(2)Detect追加
WiX toolsetのBootstarpperを試してみた(4)UI追加
0 件のコメント:
コメントを投稿