WindowsMobile 用のフリーソフトウエアは CAB 形式で配布しています。
CAB ファイルは explorer から実行するだけでインストールできるので扱いも簡単です。
今なら別の方法があるのかもしれませんが、昔から VisualStudio に付属している
cabwiz を使用しています。というか WindowsCE / PocketPC の頃に作った設定
ファイルをほとんどテンプレートとして、ずっとそのまま使ってきました。
d3dmclock の場合 (d3dmclock.inf)
[Version] Signature = "$Windows NT$" Provider = "HYP" CESignature = "$Windows CE$" [CEStrings] AppName = d3dmclock InstallDir = %CE1%\%AppName% [CEDevice.ARMWM6] VersionMin = 5.0 VersionMax = 32767.0 ProcessorType = 2577 [DestinationDirs] Shortcuts.All = 0,%CE11% Files.Common = 0,%InstallDir% DefaultDestDir = 0,%InstallDir% [Shortcuts.All] d3dmclock,0,d3dmclock.exe,%CE11% [SourceDisksNames] 1 = , "Common files",,C:\usr\ce\gclock [SourceDisksNames.ARMWM6] 2 = , "ARMfiles",,C:\usr\ce\gclock\ARMV4I\Release [SourceDisksFiles] d3dmclock.txt = 1 font.dds = 1 bgimage0.bmp = 1 bgimage1.bmp = 1 bgimage2.bmp = 1 textimage0.dds = 1 textimage1.dds = 1 textimage2.dds = 1 textimage3.dds = 1 textimage4.dds = 1 textimage5.dds = 1 textimage6.dds = 1 textimage7.dds = 1 [SourceDisksFiles.ARMWM6] d3dmclock.exe = 2 [DefaultInstall] CEShortcuts = Shortcuts.All [DefaultInstall.ARMWM6] CopyFiles = Files.Common, Files.ARMWM6 [Files.Common] d3dmclock.txt,,,0 font.dds,,,0 bgimage0.bmp,,,0 bgimage1.bmp,,,0 bgimage2.bmp,,,0 textimage0.dds,,,0 textimage1.dds,,,0 textimage2.dds,,,0 textimage3.dds,,,0 textimage4.dds,,,0 textimage5.dds,,,0 textimage6.dds,,,0 textimage7.dds,,,0 [Files.ARMWM6] d3dmclock.exe,,,0x80000000
CEString は他で参照する定数の定義です。%~% で参照しています。
Install 先フォルダをここに記述しています。%CE1% は \Program Files
SourceDisksNames はインストールするファイルが置かれている実在のパスを指定します。
SourceDisksFiles はアーカイブするファイルがどこにあるか指定します。
後ろの番号は SourceDisksNames の番号に対応しています。
Files が実際にインストールコピーされるファイルリスト。
“.ARMWM6” がついた定義名は、もともと WindowsCE が複数の CPU に対応しており
対象 CPU 毎に CAB を用意していた頃の名残です。CPU 毎に別ファイルを指定する
場合と、共通に含めるファイルを分けて記述できるようになっています。
(1) DestinationDirs でインストール先フォルダを指定。
%InstallDir% の定義は CEStrings にあります。
(2) SourceDisksNames.* にアーカイブするファイルの場所を記述
(3) SourceDisksFiles.* に必要なファイルを記述
(数値は SourceDisksNames の番号に対応している)
(4) Files.* にアーカイブするファイルを記述
詳しくはこちら
・MSDN スマート デバイスの .inf ファイルの概要
touchkeysip の場合 (touchkeysip.inf)
[Version] Signature = "$Windows NT$" Provider = "HYP" CESignature = "$Windows CE$" [CEStrings] AppName = touchkeysip InstallDir = %CE1%\%AppName% [CEDevice.ARM] VersionMin = 5.0 VersionMax = 1000.0 ProcessorType = 2577 [CEDevice.ARMGS] VersionMin = 5.0 VersionMax = 1000.0 ProcessorType = 2577 [DestinationDirs] Files.Common = 0,%InstallDir% DefaultDestDir = 0,%CE2% [SourceDisksNames] 1 = , "Common files",,C:\usr\ce\minisip2 [SourceDisksNames.ARM] 2 = , "ARMfiles",,C:\usr\ce\minisip2 [SourceDisksNames.ARMGS] 3 = , "ARMfiles",,C:\usr\ce\minisip2\gs [SourceDisksFiles] touchkeysip.txt = 1 defaultscript.txt = 1 defaultkeyboard.bmp = 1 [SourceDisksFiles.ARM] touchkeysip.dll = 2 [SourceDisksFiles.ARMGS] touchkeysip.dll = 3 [DefaultInstall] [DefaultInstall.ARM] CopyFiles = Files.Common, Files.ARM CESelfRegister = touchkeysip.dll [DefaultInstall.ARMGS] CopyFiles = Files.Common, Files.ARMGS CESelfRegister = touchkeysip.dll [Files.Common] touchkeysip.txt,,,0 defaultscript.txt,,,0 defaultkeyboard.bmp,,,0 [Files.ARM] touchkeysip.dll,,,0x80000000 [Files.ARMGS] touchkeysip.dll,,,0x80000000
コマンドの実行手順は Makefile に記述しています。(install.mak)
ZIPFILEARM = touchkeysip***.zip CABFILEARM = touchkeysip.ARM.CAB EXEARM = touchkeysip.dll all: \ $(EXEARM) \ $(CABFILEARM) \ $(ZIPFILEARM) \ zip: $(ZIPFILEARM) _MANUALFILE = touchkeysip.txt \ CommandManual.txt \ _CABSRCFILE = touchkeysip.txt \ defaultscript.txt \ defaultkeyboard.bmp \ _SRCFILEARM = $(EXEARM) \ $(_CABSRCFILE) \ ZIPSRCFILEARM = $(CABFILEARM) $(_MANUALFILE) $(ZIPFILEARM): $(ZIPSRCFILEARM) 7z a -tzip $(ZIPFILEARM) $(ZIPSRCFILEARM) CABWIZE = C:\Program Files (x86)\Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools\Cabwiz.exe $(CABFILEARM): touchkeysip.inf $(_SRCFILEARM) "$(CABWIZE)" touchkeysip.inf /cpu ARM
VisualStudio で作成&動作確認が終わったら、nmake の実行だけで CAB の生成と
zip の作成もいっぺんに行われます。上のファイルは install.mak という名前で
各プロジェクトのフォルダに置いてあります。実行はコマンドラインから
nmake -f install.mak
プログラムの数も非常に多いし、開発中はそれぞれが頻繁に更新されるので
公開までの手順は自動化されています。
ドキュメントを修正した場合も nmake だけでアーカイブが作られます。
普段使っているスクリプトファイルを入れて
touchkeysip.dll + スクリプト
といった自分専用の CAB を作っておけば、デバイスの再インストール時に
ちょっとだけ手間が減るかもしれません。