進捗状況

WMのセキュリティの問題で、MMSLiteのインストールが完了しないことがあることを回避するために、色々やっているうちに、microSDから柔軟に自動セットアップできる見通しが立ってきました。一度、ガリガリにROMインストールしまくりになった、Kaiser研究用ROMですが、またスリムアップの方向に軌道修正中です。execmulti/MortScript/TREの併用で、見た目のみすぼらしさはともかく、非常に強力なセットアップのカスタマイズが可能になってきました。

MortScriptを使ったCABのインストールは、さまざまな方法が提供されていますが、どうにかカタチになったのでメモしておきます。

# Cabインストールサブルーチン
# CabFile = ファイル名
Sub InstallCab
  IdleTimerReset
  Run("\Windows\wceload.exe", "/nodelete /silent ""\Storage Card\Setup\" \ InstallCabFile & """")
  Run("\Storage Card\Setup\SendOK.mscr")
  SleepMessage(100, "Installing " & InstallCabFile & "...", "Setup", 0, ProcExists("wceload.exe")=0)
  While (ScriptProcExists("SendOK.mscr"))
    KillScript("SendOK.mscr")
    Sleep(500)
  EndWhile
  IdleTimerReset
EndSub

SendOK.mscrは以下の通りになっています。

While (ProcExists("wceload.exe"))
  WndTitle = "Spb Insight"
  Call CheckWnd
  WndTitle = "Spb Diary"
  Call CheckWnd
  Sleep(500)
EndWhile

Sub CheckWnd
  If (wndExists(WndTitle))
    SendOK(WndTitle)
  EndIf
EndSub

サイレントモードでCABをインストールしているので、原則としてはwceload.exeのプロセスが終了するまで待てば良いのですが、Spb Insightや Spb Diaryのようにサイレントモードでも最後に確認画面が出てくるものがあります。それに対応するのが、SendOK.mscrです。数は少ないので記述することは少ないと思います。CheckWndはサブルーチンかするまでもない程度のものですが、こうすることによってコーディングミスを減らすことができます。インストール先が本体に限定されますが、インストール中にダイアログを表示でき、Spb Diaryなどの確認画面が出るものでも、簡単な記述で対応が可能になります。