個人プロジェクトで、
FMランタイムアプリ + なでしこプラグイン
で作ったアプリケーションをインストーラー付きで販売することになった。
 
その際、Vista以降はUACという消えれるか死ぬかすればいい仕組の問題でうまくいかないことが多々あって、色々試行錯誤のうえ、ようやく完成した。その覚書&報告。
 


まず、ランタイムアプリケーション。
FilemakerのAdvancedバージョンで作るのは、FM開発者ならおなじみ。
FMのアプリケーションを、FMなしで動くようにできる仕組みですね。
ランタイムアプリを作成すると、ランタイムフレームワークや起動用EXEファイル、データベースの実体バイナリなどが、
ひとつのフォルダに詰め込まれて作成されます。
 
で、まぁ通常の感覚で言えば、これをそのまま、圧縮して、
インストーラー作成ソフトなどをつかってインストーラー作っちゃえばいいのですが、ひとつ問題があります。
 
通常、アプリケーションは「C:\ProgramFiles\」にインストールするのですが、
UACの働きで、「C:\ProgramFiles\」配下はデータの書き換えが基本的にできません。.exe以外は基本的に読み取り専用です。
したがって、データの書き換えが必要なFMランタイムアプリは読み取り専用のDBになってしまうことを意味します。
 
実際は、レジストリとかいじれば、出来るのですが、インストーラーを走らせている間に、
レジストリをゴニョゴニョして。。。とか正直やってられません。
それに、レジストリを汚すのはイヤです。
 
私の場合、特殊ディレクトリである、アプリケーション設定フォルダにランタイムアプリの実体を全てインストールし、「C:\ProgramFiles\」配下には、アプリ設定フォルダに置かれたランタイムアプリを実行するだけの小さなアプリケーションを作ることで対応しました。
これにより、ランタイムアプリが読み取り専用になってしまうことを防げます。
 
ランタイムアプリを呼び出すだけの小アプリは、なでしこで簡単につくれますし、なでしこの場合は、指定アプリケーションを管理者権限で起動する命令もありますから、なお一層安心してアプリづくりができます。
 


 
次になでしこ。
前述のインストール箇所の問題をクリアできれば、まずほとんどの機能は問題なく動きます。
 
注意したいのは以下。
 
・ファイルコピーは鬼門。使わない方がいい。やるなら、一旦コピー元のファイルを開いて、新規保存する手順を、VBSなどで行うほうが良い。(なでしこにはVBS標準装備)
・なでしこの命令を別プロセスで動かす場合は、Windows標準の各セキュリティ機能に加えて、ノートン先生などにも気を配る必要があることがあるので、極力避けたい。
 
以上の2点です。
別プロセスでなでしこの命令を動かすのは、ランタイムアプリが落ちるのを防ぐなどメリットも沢山あるので、使う場合は、ノートン先生などの設定指示も、アプリケーション配布時に必要になってくるかと思います。
 


 
WindowsXPへのダウングレードが2020年まで保証されてしまったことで、XP/Vista/7 そして次のWindowsと、かなり質の違うWindowsが混在する世の中になってしまいまして(特にUACの部分で)、プログラマとしては非常に腹立たしい事態です。
 
とはいえ、そんなこと言ってても、世の中わからないので、こっちが勉強していかなくてはなりません。
ノンプログラマが使えるFilemakerの世界も同じでしょうねー。
ということで、この記事がFM開発者の方の一助になればと思います。