伊藤清徳の垂直落下式ムーンサルトプレス伊藤清徳の垂直落下式ムーンサルトプレスPerlとかPHPとかMySQLとか...がんばっても8割だ。Comment現在Filemakerのランタイムアプリケーションと、なでしこプラグインのランタイム版を使ったアプリケーションを開発中だ。そのアプリケーションをインストーラーとして固めて配布するときの注意Win7版覚書です。ランタイムアプリケーションは、Filemaker本体なしで、FMのDBアプリケーションが利用できる有用な機能だ。(DB構造が変更できないなど制限はある)ノンプログラマでも、スタンドアロンアプリケーションが作れる。ランタイムアプリを作成すると、フォルダの中に非常に多くのファイルが詰め込まれた状態で、アプリケーションがアウトプットされる。普通に使うには、そのフォルダをデスクトップやマイドキュメントあたりに格納して使えば特に問題はおきません。それらをインストーラーとして固めて配布する場合に注意すべき点が多々あります。1)インストール先ファイルメーカーはデータベースソフトウェアで、ランタイム版も同様にデータベースソフトウェアです。データベースならば、当然、アプリケーション自体または付属のファイルに利用する都度ファイル保存や書き換えが行われます。通常ユーザーではファイルの保存や変更はアプリケーションから行うことができません。Filemakerのランタイムアプリでは、レコードの追加やフィールドの変更など、データベースとして重要な機能を使えず、ReadOnlyなデータベースアプリケーションになってしまうというわけです。これでは話になりません。いうことで、Filemakerランタイムアプリの場合は、ドキュメントフォルダや、ユーザーデータフォルダなどにインストールするように、インストーラーを設計した方が吉です。世間的にはあまり推奨されていないようです。表示用ファイルへ表示する内容を流し込む。いう動きを自動的に行うよう、なでしこプラグインによって制御しているのですが、このコピーという動作は、たとえ、ユーザーデータフォルダや、ユーザードキュメントフォルダであっても、UACの制限をうけ、アプリケーションから実行することができませんでした。管理者権限でアプリケーションを実行している場合のみ、コピーの制御ができるようです。Vistaのときは、いつでも管理者権限でアプリを起動する手段があったようですが、Win7はどうなんだろう...どっちにしても回り道なのであまり考えたくありません。自動で別名保存するようにすればいいじゃないかと思って、これも行ってみましたが、拒否されるようです。(なぜかOpenOffice.orgを制御する場合はそれでいけた)どうしようか...と思って試行錯誤したところ、なでしこでテンプレートファイルの内容をバイナリとして、なでしこの変数に保存し、なでしこでファイルを作成して、そこへ変数に保存されたバイナリを流しこんで保存。いう回りくどい手段を使えば、擬似的にコピーをUACの影響なしに行えることがわかりました。Win32APIのCopyFile関数がUACの監視下にあるのだと思います。開いて内容取得→ファイル作る→取得した内容保存ですと、CopyFileを使うことはないのでUACの影響を受けなかったのではと思います。これはおそらく他の言語とかでも役に立つはず。Win7でFilemaker+なでしこのランタイムアプリをインストーラーで配布する場合は、とりあえず、以上で今のところ問題点は見つかっていません。要点を押さえれば、アプリ開発はすんなりいきます。問題はVistaです。こっちはハマりまくったので、また次回レポします。伊藤清徳の垂直落下式ムーンサルトプレス。