SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

WiXではじめるWindows Installer作成入門

WiXではじめるWindows Installer作成入門 第1回

Windows Installer XML(WiX) toolsetを利用したmsiの作成


最小インストーラを作成する

開発環境の確認と最小インストーラの作成

 WiXのチュートリアルでは、最も小さなルート要素だけで構成されたソースも用意しているのですが、さすがにそこから始めたのでは紙面が尽きてしまいますので、msiとしての最小構造から入りましょう。テキストエディタ(VSでもよい)で、下記のソースを作成します。文字コードそのものは何でも良いのですが、XMLの標準に従って、UTF-8を使うことにします(サンプルはすべてUTF-8で用意しています。エディタによっては文字化けすることがありますので、その場合は文字コードを指定してお読みください)。

MinSrc1.wxs
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi">
  <Product Id="B6A98E5F-D6A7-46FB-9E9D-1F7BF443491C" Name="最小インストーラ"
           Version="1.00.0000" Manufacturer="とっちゃん"
           Language="1041" Codepage="932">
  <Package Id="????????-????-????-????-????????????"
           Description="サンプルの最小インストーラ"
           Comments="最小インストーラデータベース" InstallerVersion="200"
           Platforms="Intel" Manufacturer="とっちゃん"
           Keywords="Installer,MSI,Database" Languages="1041"
           SummaryCodepage="932"/>
  </Product>
</Wix>

 このまま全部書き込んでしまっても問題ありません。まずはこれを保存します。基本的にはどこに保存してもかまいませんが、ソースの格納場所を決めておくとよいでしょう。

 ファイルを保存したら、コマンドプロンプトを開き、ソースの保存先フォルダに移動して、以下の2つのコマンドを実行します。

C:\WiX\candle.exe MinSrc1.wxs
C:\WiX\light.exe MinSrc1.wixobj
Console1
Console1

 これで、同じフォルダに「MinSrc1.msi」というファイルが出来上がっているはずです。早速インストールしてみたいところですが、この設定だけでは「なんのインストーラなのか」と「誰が作ったのか」という情報しかないため、実際にはインストーラとして動作するわけではありません。ですが、インストーラに必須の識別情報のすべてが含まれています。

インストール可能なインストーラの作成

 詳しい説明は最後にまとめて行なうことにして、実際にインストーラとして動作させるために肉付けしていきましょう。今回はWiXのヘルプに習って「Readme.txt」をインストールすることにします。インストール先は、Windowsロゴを参考に「\Program Files\Tocchann\WixPart1」というフォルダです。

 「Readme.txt」は、先ほど用意した保存用フォルダに「WixPart1」というフォルダを用意して、そこに保存しておきます(相対パス指定になっているので、注意してください)。ソースファイル名は、先ほどの「MinSrc1.wxs」に下記の部分を追加した「MinSrc2.wxs」としています。

MinSrc2.wxs
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi">
  <Product ...省略...>
    <Package ...省略.../>
    <!-- ここから追加 -->
    <Media Id="1" Cabinet="Product.cab" EmbedCab="yes" />

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="Tocchann" Name="Tocchann">
          <Directory Id="INSTALLLOCATION" Name="WixPart1">
            <Component Id="Component1"
                       Guid="960E5941-FE2A-4384-A96F-8AED231DB301">
              <File Id="File1" Name="Readme.txt" KeyPath="yes"
                Compressed="yes" DiskId="1" Source="WixPart1\Readme.txt"/>
            </Component>
          </Directory>
        </Directory>
      </Directory>
    </Directory>

    <Feature Id="Feature1" Level="1">
      <ComponentRef Id="Component1" />
    </Feature>
    <!-- ここまで追加 -->
  </Product>
</Wix>

 ビルドは、先ほどと同じように行います。ビルドがうまくいけば同じフォルダに「MinSrc2.msi」というファイルが作成されます。今度は実際にインストールしてみましょう。本来なら、インストーラテスト用の専用マシン(いつでもフォーマット可能な環境)を用意するのが望ましいのですが、今回はこの手間を省き、現在動かしているマシンにインストールしてしまいます。

 エクスプローラで出来上がった「MinSrc2.msi」をダブルクリックしてみてください。コマンドラインから実行する場合は、「msiexec /i MinSrc2.msi」と入力することでインストールできます。小さなダイアログ(画面1)が出てインジケータが最後まで進み、ダイアログが消えればおそらくインストール成功です。インストールできたかどうかを確認するために、インストール先として指定したフォルダ(\Program Files\Tocchann\WixPart1)に、「Readme.txt」があるかどうか確認してみてください。ファイルは存在していますか? 中身は用意したものと同じでしょうか?

画面1
画面1

 これらが確認できれば、インストールは成功です。インストールしたファイルは、取っておいてもディスクの無駄にしかならないので、とっととアンインストールしてしまいましょう。

 アンインストールは、市販のソフト同様、[コントロールパネル]の[プログラムの追加と削除]から行います。「最小インストーラ」という名前でインストールしているので、該当する項目を選択し、[削除]ボタンを押してアンインストールしてください。無事にアンインストールが完了すれば、[プログラムの追加と削除]のダイアログから消えているはずです。

 今回はここまでですが、既にインストーラの骨格は出来上がっています。[コントロールパネル]の[プログラムの追加と削除]にもセットされますし、インストール/アンインストールのロゴ案件に必要な最低条件はすべて満たしています(まだまだ、納得のいくものではありませんが)。次回からは、ユーザーに今何をやっているかをきちんと通達するUIを搭載して、もう少しまともなインストーラにしていくことにしましょう。

 それでは最後に、今回出てきたWiXのデータについて解説します。

次のページ
WiXのXML要素について

修正履歴

この記事は参考になりましたか?

WiXではじめるWindows Installer作成入門連載記事一覧

もっと読む

この記事の著者

とっちゃん(トッチャン)

Microsoft MVP for Development Tools Visual C++Windows Installer 系を中心にオンライン/オフラインで活動しています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/428 2006/08/25 19:17

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー