[ ホーム | お知らせ | ソフトウェア | 覚え書き | メール | ->英語 ]

Windowsソフト作成、避けては通れない道

Windows用のソフトを作成する際の定番作業の注意点など



目次
  • アイコンを作成する上で注意すること
  • インストーラを作成する上で考慮すること
  • ファイルの関連づけのレジストリ
  • コマンド引数の取得
  • アンインストール関連のレジストリ
アイコンを作成する上で注意すること
 いろいろと実験した結果、さまざまなアイコンの表示色の設定に対応できるよう、アイコンの画像はシステム標準の256色パレットで作成すればよいらしい。16色パレットで作成したアイコンも同梱すればさらによい。

● アイコンの画像
形式 BMP画像
色数 2色/16色/256色/フルカラー
サイズ 32×32(通常)、16×16(小さいアイコン)、任意サイズも可能

 画像自体(BMP画像)は何で作成してもよいが、アイコンファイル(*.ico)はアイコンエディタなどの専用ソフトで透過色の指定や複数画像の同梱など最終的な作業をしたほうがよい。透過色に指定できるパレットが固定されているなどいろいろと面倒なため。

● アイコンの表示色
16色パレット アイコン画像の色は標準色に自動で減色される
256色パレット 16色パレット同様 、標準色に自動で減色???
16bitカラー 16bitカラーで画像の色がそのまま表示される
24bitカラー 24bitカラーで画像の色がそのまま表示される

 アイコンの表示色の設定によって、アイコンの発色が変わることを考慮に入れてアイコンの画像を作成しなければならない。
 アイコンを何色で表示するかはレジストリで設定できるようになっている。Win95の標準値は16色らしいが、Win98やNT4.0の標準値は不明。Plus!をインストールしたり、"窓の手"などのWindows環境設定ソフトなどを使い、表示色の設定を変更し、一度発色を確認したほうがよいと思われる。

● アイコン画像のサンプル
インストーラを作成する上で考慮すること
 作成したソフトをインストールするにも定番作業がある。しかし、これらをすべて自作するのは手間がかかる。そこでそのような定番作業を肩代わりしてくれるプログラム(インストーラ)を作成するオンラインソフトが公開されている。開発環境にインストーラが同梱されていることもある。しかし、その種類は多様でどのソフトを使ってインストーラを作ればよいのか悩んでしまう。つぎに、このような場合の判断基準をまとめた。
  1. 複数のファイルをひとつのパッケージにまとめる方法は?
  2. 階層構造そのままでインストール先にファイルをコピーできるか
  3. インストール先は指定できるか?
  4. ファイル毎にインストール先を指定できるか?
  5. インストールするソフトとファイルの関連づけを作成できるか?
  6. プログラムグループを作成するか?
  7. デスクトップにショートカットを作成するか?
  8. "送る"メニューにショートカットを作成するか?
  9. スタートアップにショートカットを作成するか?
  10. 簡単にアンインストールできるか?
  11. インストーラ作成時の設定内容を保存できるか?
 すべての機能を満たすソフトは少ない、あるいは探すのが困難であるから、不足する部分は自作して補う必要が出てくるだろう。

 例えば、VisualBasic付属のセットアップウィザードをこの判断基準で評価すると次のようになる。
1 × セットアップ用のディレクトリまるごと圧縮する必要あり
2
3
4
5 × 別途、レジストリの編集が必要
6
7 ×
8 ×
9 ×
10
11
ファイルの関連づけのレジストリ
HKEY_LOCAL_MACHINE\SOFTWARE\CLASSESの下に、
".ext"など"."をつけた形で拡張子のキーを作成する。
さらにそのキーの中で指定した名前でキーを作成する。
さらにそのキーの中で例えば"shell\open"キーを作成し、
指定した拡張子をもつファイルを開くときに実行するアプリケーション を指定する。
コマンド引数の取得
 コマンドプロンプトからアプリケーションを起動する場合などは、スペースが含む引数はダブルクオーテーションで囲んで指定する。アプリケーション側ではそれに備える必要があるかもしれない。例えば、VisualBasicでは次のように取得する。
'コマンド引数の取得
Function getCommandLine(Optional maxArgs)
' 変数を宣言します。
Dim c, cmdLine, cmdLnLen, i, inArg, mode, numArgs
' MaxArgs が提供されるかどうかを調べます。
If IsMissing(maxArgs) Then maxArgs = 10
' 現在のサイズの配列にします。
ReDim argArray(maxArgs)
numArgs = 0: inArg = 0
' コマンド ラインの引数を取得します。
cmdLine = Command()
cmdLnLen = Len(cmdLine)
' 同時にコマンド ラインの引数を取得します。
For i = 1 To cmdLnLen
c = Mid(cmdLine, i, 1)
If (c = " " Or c = vbTab) Then
mode = inArg
ElseIf (c = """") Then
mode = inArg + 3
Else
mode = inArg + 6
End If
If (mode = 3) Then ' 引数の登録開始(")
numArgs = numArgs + 1
If numArgs > maxArgs Then Exit For
inArg = 2
ElseIf (mode = 6) Then ' 引数の登録開始
numArgs = numArgs + 1
If numArgs > maxArgs Then Exit For
inArg = 1
argArray(numArgs) = argArray(numArgs) + c
ElseIf (mode = 1 Or mode = 5) Then ' 引数の登録終了
inArg = 0 ElseIf (mode <> 0) Then ' 引数の登録中 argArray(numArgs) = argArray(numArgs) + c End If Next i ' 引数がすべて格納できるように配列のサイズを変更します。 ReDim Preserve argArray(numArgs) ' 関数名に配列を返します。 getCommandLine = argArray() End Function

 

アンインストールのレジストリ
 "コントロールパネル>アプリケーションの追加と削除"を選ぶと表示されるアプリケーションの一覧の内容はレジストリに保存されている。

 "HKEY_LOCAL_MACHINE\SOFTWARE\Windows\CurrentVersion\Uninstall\名前" のキーの下、
"DisplayName"に、"アプリケーションの追加と削除"で表示される名前が
"UninstallString"に、アンインストールを実行するプログラムのパス名が
保存されている。




[ ホーム | お知らせ | ソフトウェア | 覚え書き | メール | ->英語 ]

空色そふと

eXTReMe Tracker