月別アーカイブ: 2012年05月

3 posts

InstallAware

InstallAwareのドキュメントは驚くほど貧弱で、しかも英文しかありません。
しかしそれに反してソフトは評価できます。

InstallAwareでは[Windows Installer]の仕様に沿った3タイプのセットアッププログラムを作成します。
すなわち単一圧縮ファイル、CDあるいはDVDに焼き付ける形およびWEBからインストールする形です。

WEBインストールでは、
インストールが始まった時は必要最小限のプログラムだけダウンロードし、
インストールの途中で必要になったソフトを、
設定URLからダイナミックにダウンロード・インストールするようになっています。

また当該プログラムが動作するために必要なRuntimes(.NETやSQL Server等)がすでにインストールされているかどうかを確認し、
なければこれらをインストールします。

標準では用意されていないRuntimes(例えばAccessRunTime)の検査およびインストールも、
比較的容易にコーディングできます。

ただしRuntimesに関して一つの欠点があります。

WEBインストールではRuntimesをWEBに置くので問題ないのですが、
その他のインストールでは、
アプリケーションプログラムが必要とするすべてのプログラムをセットアッププログラムに入れておかなければいけません。
SQL Server等Runtimesは一般に大きなプログラムですし、
ターゲットコンピュータにはすでにインストールしてあって、
改めてインストールする必要がないかもしれません。

CDやDVDの場合は良いのですが、
単一ファイルにしてダウンロードする場合は、
ダウンロードそのものが大変ですし、その上無駄な作業になる可能性があります。

単一ファイル・セットアップをインターネットからダウンロードする形で使わないで、
WEBインストールかメディアインストールかにすればいいのでしょうが、
下に書きますようにWEBインストールでは手間暇かかるので、
すくなくともデバッグの途中では単一ファイルをWEB上に置きたくなります。

WEBインストールに問題があります。

上で書きましたが、WEBインストールでは最小限のセットアッププログラムと、
Runtimes等のいくつかの7zipファイルを作りますので、
これらの7zipファイルを指定のURLにアップロードしなければいけません。

これらのファイル名はInstallAwareの中では、大文字小文字が混ざっています(ケース・センシティブ)。
例えば、[Microsoft .NET Framework Client 4.7zip]のようです。
ところが、InstallAwareはWindowsの開発環境にセットアッププログラムの一部として
[microsoft .net framework client 4.7zip]のようにすべて小文字のファイルを出力します。

InstallAwareのユーザは、
小文字のファイル名を[Microsoft .NET Framework Client 4.7zip]のように変更して、
所定のURLにアップする必要があります。

セットアッププログラムのデバッグでビルドする度に、
何度も何度もファイル名の変更とアップロードが必要になります。

この表現は正確ではありません。
ファイルはいくつかのRuntimesと
ユーザが設定する[Program Files]や[Data Files]等のFeaturesに対応して作成されますが、
Runtimesは毎度同じですから何度も作成しなくてよいのです。
その代りデバッグ中のFeaturesはその都度更新しアップすることにないrます。

Featuresはセットアッププログラム特融の概念です。専門的で申し訳ありません。

InstallAwareのForumでもこのことにクレームがきていました(2008年)。
「アップするサーバーがLinuxの場合ファイル名はケース・センシティブだから、
これに対応するように改良してほしい」というものです。

とことがInstallAwareの開発者は、
「Windowsではファイル名は大文字でも小文字でも同じ扱いだからこれでいいのだ」
「だいたいInstallAwareはWindows用のツールなのだ」と見当違いの主張をします。

明らかにユーザの主張が正しいのですが、
大体InstallAwareがそのことを認識していないことに驚く次第です。

最近のInstallAwareの別のスレッドの回答では「改良検討中」になっていました。

私は仕方ないのでPerlで、
ファイル名を変更して指定のURLにアップするプログラムを書き、
InstallAwareでビルドする度にこのプログラムを実行することしました。
Perlはこういう仕事に適しています。

それにしてもこれはInstallAwareの中で処理すべきです。

インストールでよく使われている、
ユーザ名とシリアル番号の入力を促すセットアッププログラムの例が標準で用意されています。

インストールしようとしているアプリケーションプログラムの依存Dllの検出は、
InstallAwareの中で当該アプリケーションを動作されることで収集できますが、
使ったすべてのDllをユーザのプログラムフォルダにコピーする仕組みになっていますので
「これはいらないのではないの」というもの(例えばマウスのドライバー)も入ってきます。

マイクロソフトのセットアッププログラムでは、
必要最小限の依存プログラムを収集します。
InstallAwareでそれだけを組み込んでセットアッププログラムを作成しても正常動作しますので、
「それでもいいのでは?」と思っています。

InstallAwareそのものはすべて英文ですが、
作成したセットアッププログラムでのインストール時の表示は、
比較的容易にローカライズ(日本語化)できます。
またインストール用画面(ダイアログ)も自分で作成できるようですが、使ったことがありません。

InstallAware2012にはTrialWareというツールがあります。

デモ用でインストール後に期限切れにする仕組みを作成します。
「ある回数使ったら」とか「何日たったら」とか色々な設定ができます。
eCommerceと組み合わせて、try-and-buyの仕組みにできそうです。

私はとりあえずtry-and-dieの仕組みだけ使って、
「期限がきたら終わり」という形にしたいと思います。

私はこれまで、デモ版ではアプリケーションプログラム本体で機能を制限していましたが、
TrialWareではプログラム自体は変えないで、
セットアッププログラムで期限切れを設定するだけなので「とても使いやすいかな」と思っています。

ただし悪いことに「あと何日で期限切れです」
という案内は日本語がでません。

TrialWareにバグがあります。

アプリケーション・プログラムのExeファイルを、
スタンドアロンで期限チェックプログラムのラップをして、
このラップされたEXEを、
InstallAware2012 IDEでセットアッププログラムに組み込めば問題ないのですが、
IDEの中でいっきにこの処理をしようとするとエラーになります。

メーカーに調査依頼しています。
回答待ちです。

秀逸なのはPatchプログラムです。

アプリケーションプログラムを改変したとき、
ユーザが使用しているプログラムにPatchをあてなければいけません。
InstallAware2012では古いセットアッププログラムから容易にPatchプログラムを作成できます。
変更のあった部分を自動で認識し、
アプリケーションの環境でその部分(Featureを構成するComponent単位で)を入れ替えるようです。

PatchとかUpdateとかは、Windows Installerの仕様のようですが、
プログラムの更新が容易にできる仕組みはすばらいいです。

セットアッププログラム >> InstallAware

このブログで何度か書きましたが、
ソフトウェアを開発したら、
そのソフトをターゲットコンピュータにインストールするプログラムを作成しなければいけません。

「ターゲットコンピュータのどのフォルダーにどのプログラムやデータをインストールしていくか」
ということですが、
厄介なのは自分が作成したプログラムだけでなく、
自分のプログラムを動作させるために必要な、
マイクロソフトやサードパーティーのソフトもインストールしなければいけないことです。

パッケージソフトの場合はターゲットコンピュータも様々ですし、
それぞれのターゲットコンピュータには様々なソフトがインストールされていますので、
考えもせず各ソフトを勝手にインストールしていたのでは、
各ソフトが干渉してコンピュータがパニック状態になります。

ですから各ソフトのインストールは大変微妙な作業で、
そのためにインストール(セットアップ)作業をサポートするツールが必要です。

最も有名なソフトは[InstallShield]です。

セットアッププログラム作成ツールはどれも高価で、
[InstallShield]では安価な版でも10万円程度です。
内容は知りませんが上位のものは100万円もします。

今時高価なセットアップ作成ツールを買える(採算の合う)ソフトはどれだけあるのでしょうか。

これほど高価なのは、セットアップ作成ツールの市場が大きくないからかもしれません。
パッケージソフトを作っている会社にとっては必需品ですが、
市場規模としては大きくはないのでしょう。

私は以前は[InstallShield]を使っていたのですが、
数年前に[InstallAware]というソフトにしました。
理由は安く入手できたからです。

InstallAwareは[InstallShield]の開発会社から独立した社員が作っているようです。

最近はもっぱらこのソフトを使っています。
自分に必要なところをつまみ食いしているだけで、
全てを知っている訳ではありません。
なんとか手さぐりでインストールプログラムを作成しています。

このソフトの評価を最初に書きますと、
内容は良いのにドキュメントやサポートがとても悪いということです。
実は会社の所在地もよくわからないのですが多分米国で、ドキュメントはすべて英文です。

ドキュメントは5世代も前のもので、
しかも一冊になっていないので、
同社のホームページを探し回ってやっと何とかなるというような状態です。

フォーラムがありあますが、そこでの回答もそっけなく、
そこからの情報も大変悪いです。
ともかく次のところまで行きつきました。

インストールプログラムはCDでの配布あるいはWEBからのダウンロードとし、
インストールにはユーザ名とシリアル番号の入力を必要とする。

CD(あるいはDVD)でのインストールは昔からのインストール方法で、
最近では、インターネットからダウンロードしてインストールする方法も多くなってきました。

WEBインストールはソフト提供側からすれば、
解説書の印刷やメディアの作成等経費が軽減できますし、
将来の変更への対応やユーザの管理も容易で、
不正インストールの防止もできますので、
今後ますます増えていくことでしょう(ユーザは不満かも知れませんが)。

これからはクラウドが発展するのでしょうし、
クラウドではインストールプログラムの役割も変わってくるのでしょう。

なんでもやりたがり

コーちゃんは生まれながらに積極的でなんでもやりたがります。

歩けるようになってすぐに、
重い箒でベランダの掃除をしたり、
お父さんの缶ビールやペットボトルを運ぼうとして、
足の上に落として泣いていたようです。

運動神経も抜群です。
確か1歳になったばかりで公園の滑り台にもどんどん登って行き、
こちらはひやひやするばかりです。

先日も映画を観に行って、開演を待って長椅子に座っていたら、
彼がドンと私にぶつかります。
「何だ」と振り返ったらデングリかえりでぶつかってきのです。
コーちゃんのマイブームのようです。
「もうそんなことができるのだ」と一種感慨があります。

幼稚園でも「大きい子供と遊ぶのが好きです」と言われます。
平気で重いものを持ったり、なんでもやっていましたので、
腕力や運動能力は年齢以上に発達し、
同年齢の子供より年上のお兄ちゃん・おねえちゃんと波長が合うのでしょう。

 

なんでも「すぐやる」ことは大切なことだと思っています。
それは幼児に限った話ではありません。

仕事でも運動でも勉強でも、
自分から進んで「なんでもすぐやる」人と、
他人にいわれて「いつまでもやらない」人はその能力に大きな差が出てきます。
年を重ねるにつれてその差はますます大きくなっていきます。

「なんでもすぐやる」は時には失敗もありますが、
そこから色々なことを学び一つ成長しています。
次の挑戦はその分力になっていますので、
今度はうまくいく可能性が増しています。

これを繰り返すことでその人は成長し、
並みの人はとてもできないことを、当然のこととしてこなせる人になっています。
その人は「できる人」になります。

勉強であったり、
スポーツであったり、
リーダーシップであったり、
仕事であったり。

勿論人が成功するには「なんでもすぐやる」だけでは足りません。
集中力や、失敗したら反省しどこが悪かった軌道修正する能力や性格や、
行き詰ったとき努力し続ける粘着性や判断力や運も必要です。

 

それにしてもコーちゃんが、
「やりたがり」の性格をもって生まれたのは幸運なことです。
大きな可能性を持っていると思います。

ただ「小さいときは天才で、大きくなったらただの人」とはよくあることです。
小さいときの多少の能力の差は、
大きくなれば誰でも追いつくことができます。
またうぬぼれて増長すれば小さな天才は凡才にも落ちこぼれにもなります。

それでも一つ言えるのは、
消極的な子どもでは動機づけし励まし続けなければいけないのに比べれば、
積極的な子どもには方向付けをするだけでいいので楽しいということです。

子供の長所を伸ばしてやれるかどうかは、
周りの大人のかじ取りです。

いいものをもって生まれてきた孫を静かに見守っていたいと思います。

「大きな怪我をしないように」
「大きな病気をしないように」いつも祈っています。