2013年1月27日日曜日

Windowsでインストーラーを作るのは意外と簡単だった【NSISとWiX】

仕事でWindows用のインストーラーを作ることになって、ちょっと面倒だなと思ってたけど意外と簡単だったというお話。

今回は、以下のようなことを実現したいと思ってツールを選定、試行した。

  • 64bit版Windows対応できることが最優先
  • できれば64bitと32bitのインストーラーを1つにまとめたい
  • できれば日本語と英語のインストーラーを1つにまとめたい
  • インストーラー作成はCygwinからコマンドラインでやりたい
  • 使用許諾をインストールの過程で出したい

で、今回の成果は、GitHubに公開しておいた。汎用的に書いておいたから、他でも流用できるはず。

NSIS-WiX_Example - https://github.com/mas0061/NSIS-WiX_Example

色々試行する中でのTips等々を書いておく。なお、今回試した環境はいずれもWindows 7 64bit。

まずはNSISから。

NSIS

NSISは、専用のスクリプト言語みたいので書いてツールにかけることでインストーラーができるツール。スクリプトはちょっとクセがあるので書きやすいとは言えないけど、記述量は多くないのでなんとかなる感じ。

NSISのメリットは、64bitと32bitを1つのインストーラーにまとめられること。あとはスクリプトベースなので、後述するWiXのXMLベースよりは書きやすいとこかな。

ツールダウンロード

  • NSIS:2.46(この時の最新)
  • HM NIS EDIT/ :2.0.3(この時の最新)

ツールインストール

どちらもインストーラーを実行して素直に従えばOK。HM NIS EDITはオプションで、今回は結局インストールすらしなかった。直接スクリプトを書いていっても問題ない感じ。

Cygwinで使えるようにする

% vi .zshrc # bash使いなら vi .bashrc

↓以下を追加

export PATH="/cygdrive/c/Program Files (x86)/NSIS":$PATH

Cygwinで

% makensisMakeNSIS v2.46 - Copyright 1995-2009 ContributorsSee the file COPYING for license details.Credits can be found in the Users Manual....

となればOK

メモとTips

  • Cygwin + Poderosaの組み合わせはダメ、Cygwin + minttyやCygwinのターミナルならOK
  • Fileコマンドの/rと/oname=Xは両立できない

ディレクトリを違う名前でインストールしたければ、以下のようにする

File /r hogeRename "$INSTDIR\hogeRename" "$INSTDIR\hoge" 

参考になるURL

続いて、WiX。

WiX

ツールダウンロード

ツールインストール

どちらもインストーラーを実行して素直に従えばOK。

Cygwinで使えるようにする

% vi .zshrc # bash使いなら vi .bashrc

↓以下を追加

export PATH="/cygdrive/c/Program Files (x86)/WiX Toolset v3.7/bin":$PATH

Cygwinで

% candleWindows Installer Xml Compiler version 3.7.1224.0Copyright (C) Outercurve Foundation. All rights reserved.

となればOK

チュートリアルを実施

右も左も分からない状態で、良いチュートリアルがあったので、それをベースに作っていった。その上で詰まった所や変えたとこを書いておく。

  • ProductのVersionは、数字+.しか許されないようだ。「10.0.0b」のような記述は不可
  • ライセンスに同意して次へ進むと不明なエラー(コード2819)が出る。

上にある不明なエラーは、「Property.Id="WIXUI_INSTALLDIR"」がキャメルケースになってたためだった。

参考 : orange/note: WindowsインストーラWiX

64bit版インストーラーを作るためには、以下が非常に参考になる。この中の方法2で今回は試した。

参考 : WiXによるインストーラ作成 - torutkの日記

参考になるURL

さいごに

64bit対応のために始めた今回の試行。冒頭に書いた通り意外と簡単だった。あんまりインストーラーを作る機会はないけど、貴重な経験の1つとしておこう。いつか使うかもしれないし。

0 コメント:

コメントを投稿