nDiki : NSIS

NSIS - Nullsoft Scriptable Install System

Windowsソフトウェアインストーラ作成ツール。 コンパクトなインストーラを生成する。

NSIS スクリプトを使うと、インストーラ以外にちょっとしたプログラムを作ることができる。

NSIS スクリプトサンプル

それぞれファイルに保存して makensis.exe を実行する。

ダイアログを表示するプログラム

 Name "Hello"
 OutFile "hello-dialog.exe"
 SilentInstall silent
 Section
   Messagebox MB_OK|MB_ICONINFORMATION "Hello World!"
 SectionEnd

メモ

インストーラダイアログのブランディングテキストを変更する:

 BrandingText "my org name"

web

スポンサード リンク

2004年8月24日 (火)

NSISスクリプト書き

Modern UI以下のサンプルや、NSIS Archive などを参考に。

  • PATH環境変数への追加処理
  • プログラムの追加と削除への(レジストリ)登録処理
  • スタートメニューの登録処理

あたりをいじる。

autoconfiscate する時ほどは楽しくない。

スポンサード リンク
[ 8月24日全て ]

2004年10月14日 (木)

Linux 上で Windowsインストーラを作成する

NSIS の 2.01 が9月24日にリリースされていた。 目玉はNSISコンパイラ(makensis)が、POSIX プラットフォームで動くようになったこと。 Linux 上で Windowsインストーラが作成できるようになる。

インストールしたいプログラム/データが(Javaプログラムだったり、クロスコンパイルできるものだったり、コンパイル不要のスクリプトだったりで)用意できるならば、Linux 上でインストーラまで通して作れるのでこれは有り難い。

インストール

 tar jxvf nsis201.tar.bz2
 cd NSIS/Source
 make USE_PRECOMPILED_EXEHEADS=1
 cd ..
 fromdos install.sh
 su
 ./install.sh /usr/local/NSIS-2.01

ソースツリーにMenu ディレクトリ無くてインストール時にエラー表示がでるが、それ以外はうまくコピーされている感じ。

使ってみる

Windows 上の NSIS 2.0 で使っていたNSISスクリプト(.nsi)をかけてみる。 間接的に WinMessages.MSH をインクルードしようとしてエラー。 ファイルの大文字小文字の問題だけのようで、lib/NSIS/Include/WinMessages.nsh を同ディレクトリ上に WinMessages.MSH としてシンボリックリンクを張ることで対処。

できあがったインストーラWindows BOX で動かしてみた。 問題なくインストール完了。

素晴しい。


[ Linux 上で NSIS ]

[ 10月14日全て ]

2004年12月2日 (木)

JRE をバンドルしたインストーラNSIS で作る

Java で書いたプログラムを Windows ユーザに提供する時に、Java の実行環境の事とかを考えるのが面倒くさい。 頼まれて自分がセットアップする時も面倒くさい。

やっぱりJARファイル化したプログラムに JRE をバンドルしたインストーラNSIS あたりで作れるようにしておいた方が、あとあと楽そうだ。

JRE

しかし JRE のバンドルの話を取り扱かっている記事ってあまりみかけない。 JRE 1.4.2_06 の README.txt などに再配布の事が書いてあるのだけれど、いまいちすっきりしないところもある。例えば

All files not in these lists of optional files must be included in redistributions of the runtime environment.

とあるんだけれど、All files ってどれよ。 WindowsJRE インストーラを実行して実際にインストールした後、インストール先にあるファイルって判断で良いのかな。多分。

それから、「それらをディレクトリごとコピーすれば他でも動くかどうか」という事に関する記述が見つけられないのがちょっと気持ち悪い。大丈夫っぽいんだけれど。

NSIS

NSIS 側はディレクトリまるごとインストール(File /r jre)と、アンインストール時にまるごと削除 (RMDir /r "$INSTDIR\jre") で OK。 実行に関しては NSIS Archive の Examples にある記事「Java Launcher」を参考に起動のための exe を作るなどすれば良い。 これは NSISスクリプトを用いて「java.exe を探し出して指定したパラメータで呼び出す exe ファイル」を作るというもの。

NSISインストーラを作るためのソフトであるが、NSISコンパイラでちょっとしたプログラムも書けるよという事を示す面白い例でもある。 これぐらいの用途であれば結構コンパクトな実行可能ファイルを吐いてくれる。

[ 12月2日全て ]

2004年12月6日 (月)

JSmoothWin32 上でのJava プログラム起動ファイル作成

最近、Java プログラムを Win32 上で簡単に起動できるようにする方法を調査中。

JSmooth 0.9.7 を試してみる。 JSmooth 自体も Java アプリケーションなので、Linux で動くかと昨日試してみた(ソースをとってきて ant jar; ant run)のだがうまく動かなかった。 ということで今日 Windows 上で。

GUIベースなので使い方を一度覚えれば比較的簡単に使える。

など。手軽であるが、生成したランチャ(JARファイル埋め込み無し)で、約400KB弱となった。でかい。

NSIS で同様のランチャ(こちらも簡単なJVM検索はあり。ページへの誘導はなし)を生成すると、30KB強。 NSIS なら Linux でも生成できる事を考えると、JARファイルの exe 埋め込み機能以外は NSIS の方がよさそうだ。

[ 12月6日全て ]

2004年12月31日 (金)

私的10大ニュース2004 [ comp ]

cool programs

Palm OS 生活復活

PEG-TJ25を購入し、Palm OS 生活復活。 最初はおもちゃのつもりで買ったのだが、プロジェクトマネジメントなどにシフトした仕事のスケジュール管理などで大活躍。

PDA 市場の明るい話はあまり聞かないが、末長く製品が出て続けて欲しい。

http://www.naney.org/img/2004/X/X2004-03-05-0003.jpg http://www.naney.org/img/2004/X/X2004-03-14-0004.jpg http://www.naney.org/img/2004/X/X2004-04-10-0001.jpg

[ 12月31日全て ]

2005年1月8日 (土)

NSIS が再び Linux でコンパイルできるように

2.01 で POSIX プラットフォームで動くようになった NSIS であるが、2.02、2.03 は Linux上ではソースパッケージからのビルドエラーになってしまっていた。

1月5日に 2.04 がリリースされたので、こちらも試してみる。お、ビルドできた。

 tar jxvf nsis204.tar.bz2
 cd NSIS/Source
 make USE_PRECOMPILED_EXEHEADS=1
 cd ..
 su
 ./install.sh /usr/local/NSIS-2.04

インストール時に Menu ディレクトリが無くてエラーメッセージが出るのは前回と一緒。CVS リポジトリをみるとHTMLで書かれたドキュメントがあるだけのようなので、無くても問題なさそうである。 付属の install.sh も改行コードが CRLF から LF に修正されているためそのまま実行できるようになった。


[ Linux 上で NSIS ]

[ 1月8日全て ]

2005年3月7日 (月)

UPX実行可能ファイルを小さく

PARのチュートリアルで UPX (the Ultimate Packer for eXecutables)というツールが紹介されていたので使ってみる。 実行可能なファイルを、実行可能のまま圧縮するというもの。 MS-DOSの時代の伝説のプログラム DIET を思い出す。

PAR で実行可能形式に変換したPerlスクリプトを UPX 1.25 で圧縮したところサイズが小さくなった。 しかし PAR で作った実行可能バイナリは実行時に自身を展開するため、圧縮によってフォーマットが変わってしまっていることを検知して警告が出てしまう。 ちょっとよろしくない。

それにNSISインストーラを作ってしまえばかなり高圧縮がかかるし、そういう意味では出番がないか。

いや USB メモリにいろいろ実行可能ファイルを詰め込みたい時にはいいかもしれない。

[ 3月7日全て ]

2005年4月20日 (水)

SConsGNU Autotools のかわりになるか

NSIS のサイトによるとビルドに「SCons」を使うようしたらしい。

  • クロスプラットフォーム
  • AutoconfAutomake と同様の機能を統合
  • LaTeX もビルトインサポート

と興味深いツールになっているようだ。

現在プロジェクトLaTeXベースのドキュメント生成には GNU Make を使っているのだが、UNIXWindows の両方でビルドできるようにするには ComSpec 環境変数の有無で使用するコマンドを切り換えたり等いろいろ面倒なので、代替ツールとして使えないかなと。

基本的な機能は Make に対する改良がなされているようであるし、コピー等ファイル操作も SCons 自体がもっているのでクロスプラットフォームでビルドできるようにするのも楽そうだ。

一方 Autoconf 系の機能については、インストール済みのライブラリの検出や実装レベルのチェック等を実装しているようである。 make check や make dist、make install 等にあたるターゲットに関する機能(あるいは規約)のようなものは無い。これは非常に残念。 結局自分が Ant を使わなくなったのも GNU Autotools にあるこれらの機能に欠けているからであるし。

実は私がPerl が好きな理由の一つとして、これらサポートが充実しているという点がある。Perl では ExtUtils::MakeMaker (あるいは Module::Build)があり、ビルドからテスト、ソースパッケージのパッケージングまでフレームワークが整っている。

SConsPython ベースで、Makefile にあたるファイルも Python スクリプトである。 SCons が影響を受けた Cons は Perl ベースであったのだが、既に2001年5月ごろから開発が止まってしまっている。残念。

ということで Make の代替には使えそうであるが、GNU Autotools と同じようなことをするにはいろいろ手をかけないといけないといった印象。

[ 4月20日全て ]

2006年12月20日 (水)

NSIS 2.22 は Linuxビルドできず

Windows 用のインストーラ作成ツール NSIS は、スクリプトベースでインストーラを作っていくのが1つの特徴である。 NSIS スクリプトは、さすがインスーラ作成用だけあって

  • ファイル処理 (コピー、削除、……)
  • レジストリの読み書き
  • プログラムの実行

その他システム関連のコマンドが充実している。 コンパイルするとかなりコンパクトな実行形式ファイル (EXE) を生成してくれるので、ちょっとした処理を自動化するには便利である。

今回 USB メモリに入れておいて、そのドライブ上のいくつかのディレクトリに PATH が通った状態でコマンドプロンプトを開くツールを NSIS で書いておこうかと思って試す。

NSISPOSIX ベースシステムでビルドし実行でき、NSIS スクリプトをコンパイルできる。 ということで作業を Linux で作業をしていたのだが、どうやら System::Call が使えないようだ(スクリプトのコンパイルに失敗する)。

Debian パッケージが古いせい (2.19-1.1) かと思い、ソースパッケージビルドしてみたらまさに System 関連らしいところでコンパイルがこけている (そういう背景で Debian パッケージアップデートされていない?)。

ということでどうも最新の NSISLinux では駄目っぽい。

しょうがないので久しぶりに Wine

Wine 上に NSIS 2.22 をインストールして makensis.exe を実行してみたところ試した範囲ではうまく動いている。 ついでにでき上がった実行可能ファイルWine 上で試せる。

しばらくは Wine 上で NSIS スクリプト書きを楽しむことにしよう (最終的には Windows 上でコンパイルしなおして動作確認するのだけれども)。

[ 12月20日全て ]

2009年1月23日 (金)

今日のさえずり - シビラ VS ニセシビラ

naney:3218959549

2009年01月21日

2009年01月22日

  • 12:45 Synkron お試し中。 *P3
  • 13:17 Synkron 双方向同期の振舞いがちょっと希望と違うな。やっぱり Unison か。 *P3
  • 17:48 1月28日の有給休暇申請書出した。 *P3
  • 18:48 冷蔵庫買ったよ。 [mb]

2009年01月23日

[ 1月23日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィでマネージャー・プロダクトオーナーをしています。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

follow us in feedly

※内容は個人的見解であり所属組織とは関係ありません。

月別インデックス
Process Time: 0.053962s / load averages: 0.44, 0.50, 0.49
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker