見出し画像

TWSNMPのインストーラーの作り方(Windows版)

インストラーを作るツールの話を

に書きました。今回は、このツールを使ってWindows版のインストーラーを作る方法について書きます。

に詳しい説明がありますが、ポイントが分かりにくいのでショートカットしたい人向けの解説です。

インストーラーを作る流れ

大体、こんな感じです。

・WiX Toolsetをインストールする。
・インストーラーに必要なファイルを準備する。
・XMLの定義ファイルを作成する。
・WiX Toolsetのコマンドでビルドする。
・できたインストーラーを試してみる。

WiX Toolsetをインストールする

WiX Toolsetは、

にあります。最新版をダウンロードして、インストールすればよいです。

にインストールなどの手順が詳しく書かれています。

インストーラーに必要なファイルを準備する

TWSNMPの場合はWindowsの実行(EXE)ファイルだけあればプログラムを実行できます。go-astilectronで開発しているので必要なファイルをすべてEXEファイルの中に組み込んでいるからです。なので、EXEファイルだけでもインストーラーを作ることができます。でも、もう少しオリジナル製品のインストーラーぽくするために必要なファイルもあります。
まとめると

・TWSNMPの実行(EXE)ファイル
・ライセンスファイル
・バナー画像ファイル
・ダイアログ画像ファイル

画像1

ライセンスファイルは、プログラムのライセンスを書いたRTF(リッチテキスト)形式のファイルです。RTF形式のファイルは、WindowsならばWordpad、Miscrosoft Wordで、Macならば、テキストエディタで編集できます。画像ファイルは、古くからWindowsの画像ファイルの標準であるBMP(ビットマップ)形式です。


画像のサイズやファイル形式の参考に、実際のファイルをアップロードしておきます。
ライセンスファイル

バナー画像

ダイアログ画像

XMLの定義ファイルを作成する

WiX Toolsetは、インストーラーをXML形式のファイルで定義します。まずは、実際のファイルを見てください。

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
 <Product Name="TWSNMP Manager"  
         Manufacturer="Masayuki Yamai"
         Id="b4bc1036-c4e3-4d24-b7a7-dea38791d7e8"
         UpgradeCode="16ff6a45-4429-4a6b-869e-9a1a9fed5039"
         Language='1041' Codepage='932'
         Version="5.0.0.3">
   <Package Id='*' Keywords='Installer'  
     Description="TWSNMP 5.0.0-beta.3" 
     Comments="TWSNMP 5.0.0-beta.3"
     Languages='1041' SummaryCodepage='932'
     InstallerVersion="100" Compressed="yes" />
   <Media Id="1" Cabinet="twsnmp.cab" EmbedCab="yes" />
   <Directory Id="TARGETDIR" Name="SourceDir">
     <Directory Id="ProgramFilesFolder" Name="PFiles">
       <Directory Id="TWSNMP" Name="TWSNMP">
         <Component Id="MainExecutable" 
           Guid="18fad287-b9c6-48ed-9044-02a52baaec16">
           <File Id="TWSNMP.EXE" 
                 Name="TWSNMP.EXE"
                 DiskId='1' KeyPath='yes'
                 Source="Z:\TWSNMP\TWSNMP.EXE">
             <Shortcut Id="ExeShortcut" Directory="ProgramMenuDir" 
               Name="TWSNMP" Advertise="yes" Icon="TWSNMP.EXE" IconIndex="0" />
           </File>
         </Component>
       </Directory>
     </Directory>
     <Directory Id="ProgramMenuFolder">
       <Directory Id="ProgramMenuDir" Name="TWSNMP">
         <Component Id="StartMenuShortcuts" Guid="fd59c661-dfdf-4aeb-b58f-0c7ac164f4d4">
             <RemoveFolder Id="ProgramMenuDir" On="uninstall" />
             <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value="" />
         </Component>
         </Directory>
     </Directory>
   </Directory>
   <Feature Id="DefaultFeature" Title="Main Feature" Level="1">
     <ComponentRef Id="MainExecutable" />
     <ComponentRef Id="StartMenuShortcuts" />
   </Feature>
   <UI />
   <UIRef Id="WixUI_Minimal" />
   <Icon Id="TWSNMP.EXE" SourceFile="Z:\TWSNMP\TWSNMP.EXE" />
   <WixVariable Id="WixUILicenseRtf" Value="Z:\TWSNMP\lic.rtf" />
   <WixVariable Id="WixUIBannerBmp" Value="Z:\TWSNMP\Banner.bmp" />
   <WixVariable Id="WixUIDialogBmp" Value="Z:\TWSNMP\Dialog.bmp" />
 </Product>
</Wix>

TWSNMPのインストーラーは、これだけの定義で作れます。
でも、最初は何書いてあるかわからないので難しそうに見えると思います。私もそうでした。私は、まず、チュートリアルを真似して作ってみてとりあえず動作するようにしました。わからないところは後からマニュアルを読んでちょっとずつ理解しました。最初から全部理解して作りたい人も多いと思いますが、頑張ってくださいとしか言えませんが、手っ取り早く、自分のプログラムのインストーラー作ってみたい人は、このXMLの定義を編集して作ってみるのがよいと思います。大抵のものはできると思います。

自分用に編集するコツは、

・TWSNMPという文字を自分のプログラムに置き換える。
・5.0.0というバージョンも自分のプログラムのバージョンに置き換える。
・作者の名前を自分の名前に置き換える。
・Z:\TWSNMP\から始まる部分は、実際のファイルのパスに置き換える。
・GUID(UUID)は、独自のものに置き換える。

です。
最後のGUID(UUID)は、”18fad287-b9c6-48ed-9044-02a52baaec16”のような部分です。

このまま、同じ値を使うとTWSNMPと同じプログラムになってしまいます。たぶん、TWSNMPをインストールしているパソコンにインストールできなくなると思います。なので、独自のものに変える必要があります。でも、どこかに申請して発行してもらう必要はありません。自分で作ればよいです。
Windowsで作るためには、PowerShellで

[Guid]::NewGuid()

のコマンドを実行すればよいようです。

でも私は、Visual Studio Codeの

を使っています。

ちなみに、GUIで、XMLの定義ファイルを作成するツールもあります。

試してみましたが、私にはちょっと馴染めないものでした。

XMLの定義ファイルも参考のためにアップロードしておきます。

WiX Toolsetのコマンドでビルドする

必要なファイルとXMLの定義ファイルの準備ができたら、WiX Toolsetのコマンドでインストーラーをビルドします。私は、バッチファイルを作っています。

candle -nologo twsnmp.wxs -out twsnmp.obj -ext WixUIExtension
light -nologo twsnmp.obj -out twsnmp.msi -ext WixUIExtension  -cultures:ja-JP

注意するのは、コマンドにパスが通っていることです。
エラーがあれば、ここで表示されます。

できたインストーラーを試してみる

うまくビルドできたらtwsnmp.msiというファイル があると思います。これをダブルクリックすれば、インストーラーが起動すると思います。

つづく

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。