とはいえ、Windowsインストーラとはもはやある種のプログラミングであり、そうおいそれとマーケターの方々が作成できるものとは思えない。かくいう私も作ったことがないに等しい。
というわけで、いろいろググってみるとどうやらWindowsインストーラを作るためのツールは世の中に3つ存在するらしい。
- Install Shield
- Visual Studioセットアッププロジェクト
- Windows Install XML(WiX) toolset
とにかく3つしかない。
そして、1と2は有料なので私のような貧乏人は必然的に3しか選べない。
というわけで、WiXのページにいってインストーラをダウンロードして・・・ってインストーラ作るのにインストーラをダウンロードしないといけないの?!という話はおいといて・・
インストールすると、
C:\Program Files\Windows Installer XML v3.5\bin
または
C:\Program Files (x86)\Windows Installer XML v3.5\bin
の中にcandle.exeとかlight.exeとかあるからこれ使います。
とりあえず第一歩、何もしないインストーラを作る。
こんな感じのxmlを書いて、
<?xml version='1.0' encoding='windows-1252'?> <Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'> <Product Name='Foobar 1.0' Id='YOURGUID-75B6-4D14-AEC1-97516A689CDE' UpgradeCode='YOURGUID-7349-453F-94F6-BCB5110BA4FD' Language='1033' Codepage='1252' Version='1.0.0' Manufacturer='Acme Ltd.'> <Package Id='*' Keywords='Installer' Description="Acme's Foobar 1.0 Installer" Comments='Foobar is a registered trademark of Acme Ltd.' Manufacturer='Acme Ltd.' InstallerVersion='100' Languages='1033' Compressed='yes' SummaryCodepage='1252' /> </Product> </Wix>
Sample.wxsって名前で保存してコマンドラインから
C:\temp> "c:\Program Files (x86)\Windows Installer XML v3.5\bin\candle.exe" Sample.wxs
Microsoft (R) Windows Installer Xml Compiler version 3.5.2519.0
Copyright (C) Microsoft Corporation. All rights reserved.
Sample.wxs
C:\temp\Sample.wxs(4) : error CNDL0009 : The Product/@Id attribute's value, 'YOURGUID-75B6-4D14-AEC1-97516A689CDE', is not a legal guid value.
C:\temp\Sample.wxs(4) : error CNDL0009 : The Product/@UpgradeCode attribute's value, 'YOURGUID-7349-453F-94F6-BCB5110BA4FD', is not a legal guid value.
Microsoft (R) Windows Installer Xml Compiler version 3.5.2519.0
Copyright (C) Microsoft Corporation. All rights reserved.
Sample.wxs
C:\temp\Sample.wxs(4) : error CNDL0009 : The Product/@Id attribute's value, 'YOURGUID-75B6-4D14-AEC1-97516A689CDE', is not a legal guid value.
C:\temp\Sample.wxs(4) : error CNDL0009 : The Product/@UpgradeCode attribute's value, 'YOURGUID-7349-453F-94F6-BCB5110BA4FD', is not a legal guid value.
うーん・・・GUIDっていうのをちゃんとふらないとダメらしい。
で、そのためにはMicrosoft Exchange Server GUID Generatorつーのがいるらしい。
あのーインストーラ作るために何個インストーラを実行すればいいんすかね?
はい、GUID直します。ついでにxmlのエンコードをutf-8にして、
LanguageとCodepageをそれぞれ1042・932にするとインストーラが日本語になります。
<?xml version='1.0' encoding='utf-8'?> <Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'> <Product Name='Foobar 1.0' Id='CA75EB30-3577-42ba-A9AA-9E7AD3B4B663' UpgradeCode='205E7C9B-779D-49d1-A4D8-F04622EC2F01' Language='1041' Codepage='932' Version='1.0.0' Manufacturer='Acme Ltd.'> <Package Id='*' Keywords='Installer' Description="Acme's Foobar 1.0 Installer" Comments='Foobar is a registered trademark of Acme Ltd.' Manufacturer='Acme Ltd.' InstallerVersion='100' Languages='1041' Compressed='yes' SummaryCodepage='932' /> </Product> </Wix>
さあ、じゃあ気を取り直して今度こそ。
C:\temp> "c:\Program Files (x86)\Windows Installer XML v3.5\bin\candle.exe" Sample.wxs
Microsoft (R) Windows Installer Xml Compiler version 3.5.2519.0
Copyright (C) Microsoft Corporation. All rights reserved.
Sample.wxs
C:\temp> "c:\Program Files (x86)\Windows Installer XML v3.5\bin\light.exe" Sample.wixobj
Microsoft (R) Windows Installer Xml Linker version 3.5.2519.0
Copyright (C) Microsoft Corporation. All rights reserved.
C:\Users\Kuniaki\AppData\Local\Temp\mrg45mhu\Sample.msi : warning LGHT1076 : ICE71: The Media table has no entries.
Microsoft (R) Windows Installer Xml Compiler version 3.5.2519.0
Copyright (C) Microsoft Corporation. All rights reserved.
Sample.wxs
C:\temp> "c:\Program Files (x86)\Windows Installer XML v3.5\bin\light.exe" Sample.wixobj
Microsoft (R) Windows Installer Xml Linker version 3.5.2519.0
Copyright (C) Microsoft Corporation. All rights reserved.
C:\Users\Kuniaki\AppData\Local\Temp\mrg45mhu\Sample.msi : warning LGHT1076 : ICE71: The Media table has no entries.
とすると、Sample.msiが完成。しかしこれはインストーラのテイをしてるけど
実際に動かしても何も起こりません。
ま、何の設定もしてないので当たり前っちゃ当たり前なんだが。
レジストリに登録してファイルを配置してショートカットを追加して云々・・・
やりたいことと現実のかい離がハンパじゃない。
続きは次回。