【Wix 5】要素 名前空間なんちゃらかんちゃらには無効な子要素なんちゃらかんちゃらが多すぎる【wixui】

インストーラー作成問題としてWix 5を使っていますが

EULA(End-User License Agreement)を表示するにもいっぱいいっぱい。

前提条件がまずわからない
Chat GPTはWix 3を返してきますが、いまWix 3つかえねぇしドキュメントもひどいし
何を検索すればいいのかもわからないなか
神のような記事を見つけました!
https://qiita.com/tohshima/items/19f3b220ebc36801edbe

ちなみに公式はここなんですが
https://wixtoolset.org/docs/tools/wixext/wixui/
これがGoogle検索に引っかかるのはほぼあきらめた方がいいレベルで出てこないです。

Wixタグに xmlns:ui=”http://wixtoolset.org/schemas/v4/wxs/ui”を追加して
Wix → Package直下に
<ui:WixUI Id=”WixUI_Minimal”/>
のように入れることによって
UIの表示を切り替えられるようになりました。
カスタムアダイアログを入れることもできるそうですが、そこまでは調べられない。

ひとまずこんな感じで

<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:fire="http://wixtoolset.org/schemas/v4/wxs/firewall" xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui">
	<Package Name="$(Name)"
             Manufacturer="$(Manufacturer)"
             Version="$(Version)"
             UpgradeCode="$(var.UpgradeCode)"
             Compressed="true"
			 Codepage="65001"
			 >

		<!-- Define the CAB file as part of the package -->
		<Media Id="1" Cabinet="RemouseService.cab" EmbedCab="yes" CompressionLevel="high"/>
		
		<WixVariable Id="WixUILicenseRtf" Value="..\..\Installer\!(loc.LicenseAgreement)" />

		<ui:WixUI Id="WixUI_Minimal"/>
		

EULAの表示ができるようになりました。
EULAの表示部分はWixUILicenseRtfでファイルを指定します。
Codepageはこのパッケージ全体をUTF-8
CabinetはMSIファイルとCabファイルを合体してね
WixUILicenseRtfでEULAのライセンスファイルを指定
WixUI_MinimalでEULA表示+修復/削除とかのダイアログを出してくれます。
!(loc.LicenseAgreement)でLocalize用のwxlファイルからファイル名を取得します。

Localize用のwxlファイルはこんな感じ。
ファイル名を下記にすることで自動的に読み込んでくれるみたいです。
ローカライズの設定は
プロジェクトのプロパティを開き Build→ Cultures to build:に
「en-US;ja-JP」と記載することによって米国英語、日本語を出力してくれます。
ちなみにWindowsですがUTF-8なので注意!!
https://wixtoolset.org/docs/tools/wixext/wixui/
WixUI_ja-JP.wxl

<WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="ja-jp">
  <String Id="LicenseAgreementDlg_Title" Value="!(bind.Property.Manufacturer) !(bind.Property.ProductName) v!(bind.Property.ProductVersion) Setup" />
  <String Id="LicenseAgreementDlgDescription" Value="Please read the following license agreement." />
  <String Id="Title" Value="インストーラータイトル" />
  <String Id="Help" Value="ヘルプ" />
  <String Id="Next" Value="次へ" />
  <String Id="Install" Value="インストール" />
  <String Id="Cancel" Value="キャンセル" />
  <String Id="Finished" Value="インストールが完了しました。" />
  <String Id="LicenseAgreement" Value="LicenseAgreement_ja.rtf" />
</WixLocalization>

これでどやーってやってみたら真っ白!スクロールすると表示されるけど法的文書だからたぶんだめだよね!

で、ここを注意深く読んでみると。。。
https://wixtoolset.org/docs/tools/wixext/wixui/

There is a known issue on some (typically older) versions of Windows with the rich text control used to display the text of the license file. The text can appear blank until the user scrolls down in the control. This is typically caused by complex RTF content (such as the RTF generated when saving an RTF file in Microsoft Word). If you run into this behavior in your setup UI, one of the following workarounds will fix it in most cases:

  • Open your RTF file in WordPad and save it from there in order to remove the complex RTF content from the file. After saving it, rebuild your MSI.
  • Use a dialog set that has a “welcome” page before showing the license. This problem typically only occurs when the license agreement screen is the first one displayed during setup.

RTFをOfficeのワードで作ると表示されないぜlol
的なことが書かれてます。
RTFをワードパッドで保存しなおしましょう。

と情報を探すのが大変なWix 5でした!

コメント

タイトルとURLをコピーしました