&tag(WiX/バンドル); *目次 [#k40bd576] #contents *関連ページ [#g1036fac] -[[WiX]] *参考情報 [#c8b2e4a7] -[[Working with WiX Standard Bootstrapper Application:http://wixtoolset.org/documentation/manual/v3/bundle/wixstdba/]] *概要 [#ja7634b7] -Bootstrapperと呼ばれるexeファイルから、個別のmsiを呼び出すようなインストーラーを作成することができる。 -必要なライブラリやランタイムを本体とは別個にインストールしないといけないときに使用する。 -またインストーラーのGUIを多言語化するときもこの方法を使う。 -WixUI_ja-jp.wxlをダウンロードして使わないといけない。 *基本 [#za460032] -[[Working with WiX Standard Bootstrapper Application:http://wixtoolset.org/documentation/manual/v3/bundle/wixstdba/]]にある手順を実行してみる。 -example.wxsを以下の内容で作成。実際はLicenseUrlで正しいライセンスを指定すること。 #pre{{ <?xml version="1.0"?> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Bundle Version="1.0.0" UpgradeCode="229a81d7-7a70-4492-b0c5-f72b2f3e2d9e"> <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense"> <bal:WixStandardBootstrapperApplication LicenseUrl="" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" /> </BootstrapperApplicationRef> <Chain> <MsiPackage SourceFile="sample.msi" DisplayInternalUI="yes" /> </Chain> </Bundle> </Wix> }} -sample.msiを適当に準備し(空ファイルでもよい)、以下のコマンドでインストーラーexample.exeが作られる。 #pre{{ candle.exe example.wxs -ext WixBalExtension light.exe example.wixobj -ext WixBalExtension }} *多言語化 [#ma1742d1] **参考情報 [#jbd70062] -[[Wix 3.8 Standard Bootstrapper HyperLinkLicense - Full Working Sample | How IT changes the world:http://max.zamorsky.name/node/78]] -[[wix-users - Using burn for installer localization:http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Using-burn-for-installer-localization-td7583910.html]] -[[wix-users - My experiences making a multi-language bundle:http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/My-experiences-making-a-multi-language-bundle-td7208949.html]] -UserLanguageID、SystemLanguageID などを使ってMsiを呼び出す。しかしフォールバックを考えないといけない。 -[[Burn Built-in Variables:http://wixtoolset.org/documentation/manual/v3/bundle/bundle_built_in_variables.html]]使えそうな変数。 --SystemLanguageIDはGetSystemDefaultLangIDで決定される。 --UserLanguageIdはGetUserDefaultLangIDで決定される。