[WiX] WiX 3.6でRegistryKeyエレメントに変更があった

WiXの3.6betaを使ってmsiをコンパイルすると見たことのない警告メッセージが出た。

問題のソースコードではレジストリキーを書き込むためのRegistryKeyエレメントでActionを指定している。
ソースコードはだいたい以下のような感じになっていた。

<RegistryKey Id='InstallKey' Root='HKLM' Key='Software\samplepath' Action='create' >

3.6betaで出力される警告は以下。

"C:\Users\dev\myproduct.wixproj" (Build ターゲット) (1) -> (Compile ターゲット) ->   C:\Users\dev\myproduct.wxs(74): warning CNDL1138: The RegistryKey/@Action attribute has been deprecated.  In most cases, you can simply omit @Action.  If you need to force Windows Installer to create an empty key or recursively the key, use the ForceCreateOnInstall or ForceDeleteOnUninstall attributes instead. [C:\Users\dev\myproduct.wixproj]
1 個の警告     
0 エラー

警告の内容だと Action がdeprecatedであり、多くの場合は単にこれを消すだけでよい、となっている。
ところが、Actionを消すだけだと警告からエラーに変わり、かえって症状が悪化する。

C:\Users\dev\myproduct.wxs(63): error CNDL0035: The RegistryKey/@Id attribute cannot be specified when attribute Action is present with value 'none'. [C:\Users\dev\myproduct.wixproj]
プロジェクト "C:\Users\dev\myproduct.wixproj" (Build ターゲット) のビルドが終了しました -- 失敗。
ビルドに失敗しました。

Registrykeyのマニュアルは以下。
http://wix.sourceforge.net/manual-wix3/wix_xsd_registrykey.htm
この内容を参考に、ActionのかわりにForceCreateOnInstall=’yes’を追加するとエラーも警告も消える。

WiXのヘルプを読む限りではこの属性は通常はなくてもよいものだ。現状 WiXの 3.6はベータなので正式版で変わるかもしれない。元のソースコードでも警告だけで結果は正常なmsiが作られるので、あえて消さないという選択でいいのかもしれない。

広告

コメントを残す

コメントを投稿するには、以下のいずれかでログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。