さよじゅぴとかのゲームにはゲーム本体以外にも、プログラムはくっついてくる(おまけゲームとか違うよ)。つまり、開発せんといかんちゅうこと(他の所から入手するのもあるけど)。
その代表的なものが、ラウンチャとインストーラ(そしてアンインストーラ)。
インストーラは誰もが知っているとおりのもの。
上の動作で基本的に今は足りている。だからウイザード(次へ、とか戻る、が付いているインストーラお馴染みの形態)を使う必然性は、この場合は無いと言っても良い。(モードの変遷を明示するという点では悪くはないけれど)
しかしたとえば、スプラッシュスクリーン(最初に出てくる、「XXを買ってくれてありがとう、次へ」)を表示したりだとか、長文のクリンゴン語で法的同意書を表示させたりだとか、弁護士の入れ知恵でそれを読み上げたりだとか、ファイルのコピー中にスライドショーをやろうとかしだすと、ちょっと面倒くさくなる。
それほど無意味なものでなくとも、部分インストールを実装しようとすると、コンポーネント(ソフトのうち、独立して付けたり外したりできる部分)を単独で選択できるようにして、各コンポーネント間の依存関係を処理するだとか、ソフト側に今インストールされているものを通知する何らかの機構を用意したり、
・標準
・最小
・カスタム
的にプリセットを用意して、現在の状態から他の状態へ遷移できるような仕組みを作らなければいけない。
そのうえにインストールスクリプトを自動で作成できるような疑似開発環境を整えたり、アップデートした際の整合性をとったり、インストールが中断しても、設定した項目を覚えているようにするなら、これは結構大変な仕事なのである。
大抵のsetup.exeは宗教的理由から、あまり便利なライブラリが使えない(インストーラにあんまし大きかったり、最新のmfc42.dllが必要ですとか言われるとへこむ等)。後述するアップデータの事も考えると、益々そうである(アップデート部分が50KBくらいなのに、インストーラが1MBくらいあるのは、帯域の無駄)。
別にMicrosoft Officeとかについているインストーラなら、例え10MBあったところで問題はない。インストールシステムのインストールに1.5MBくらいのインストーラがあってWindowsを再起動しないとOfficeのインストールもできない、なんて事も、実にMicrosoftらしくて微笑ましいくらいである。
ところで、ネットワークで配布されているソフトなどでは「exeファイルが1つだけ」という事は割合良くある。しかし、そいつを実行すると「まずインストーラを解凍するための自爆型アーカイバが走ってファイルが解凍されて、今度はインストーラ内の圧縮されたファイル群が解凍されて、インストーラ本体が実行される。そいつはまた圧縮されたデータを展開しながらコピーしだす。」みたいな動作って結構ある。
つまるところ、 hogehoge.exeの実行 setup.exe (ソフト.pak) (インストーラ.pak)解凍。 setup.exeの実行 インストーラ本体.exe、(インストーラ.pak)より解凍。 インストーラ.exeの実行 ソフトを (ソフト.pak)から取り出してコピー。
みたいな非常に無駄な解凍行為が2度も行われており、さらにこのhogehoge.exeが40MBとかやったりすると、心中穏やかではなく、また土壇場になってインストールをキャンセルすると、また何分も解凍を待たねばならないのかとげんなりしてしまう。やはりGHz級マシンを買えというメッセージなのだろうか? それとも、全く別種の独立したプロセスを適当に組み合わせたために起こるオーバーヘッドなのだろうか?
ま、それはともかく。このような単一セットアップ実行ファイルってのは、CDROMとかでは無用(ファイルを1つにまとめる必然性がないし、最小インストールなどで、データを実行時にCDROMから読み出すことが不可能に近くなるから)なんだけど、ネット越しにソフトとかアップデータを配信するには事実上この方法しかない。利用者に無駄な手間はとらしたくはないからね。
タイトルに反するけれど、結論はない。敢えて言うなら、「今度開発する時は、こういう事をちゃんと考えて作るよ。それと、何十MBもある巨大な連鎖自爆型インストーラUZEeee!」
≪ Prev |