Flashコンテンツをローカル再生した際のセキュリティ設定を回避する その3 それはmProjector

http://www.adobe.com/jp/devnet/flashplayer/articles/fp8_security.html
根本的な解決策としてはインストーラーを作りましょう と書いてあるのですが
ブラウザでお手軽に見てもらうコンテンツで、インストールしてくれー というのは敷居が高いので避けたいところです

このインストーラーに何をさせるかというと
・****.cfgというテキストファイルを作る
・その中には C:\Program Files\Sample\swfs みたいに該当するswfが入っているディレクトリまでのフルパスを記入。

これだけです。
cfgのファイル名は適当タイムスタンプあたりから生成します。

path.jpg

このファイルがswfの読み込まれる前に存在すると、ローカル再生の制約なくコンテンツを再生することが可能になります。

Visual Studioなどを使いこなせる方は、こんなテキストファイルを生成するちっとしたexeを作れば完了です。

でもFlash使いとしては、こういうところもFlashでこだわりたいところですね
ここでいよいよmProjectorの出番です。

●なんでも出来るよ mProjector
mProjector
mpro.jpg

このmProjectorを使うとActionScriptでファイルの生成や、ディレクトリの作成が可能なexeが作成出来ます。

今回の所定の位置にテキストファイルを書き出すことぐらい、簡単にできると思われたのですが、mProjectorも万能ではなく、書き出せる文字コードがUTFのみでした

cfgファイルはOSの文字コードに依存するようで、XPならShift-JISじゃないとダメです

もともと空のテキストをShift-JISで作っておいて、コピーして中身を入れる とかいろいろ試してみたけどうまくいきません
mProjectorは書き込む内容に日本語が含まれる時点で、UTF-8しか出力できないようです

●テキストファイルの文字コード変換
ここでさらに別のアプリ登場。文字コード変換の老舗 nkf
nkf バイナリ版
http://www.vector.co.jp/soft/win95/util/se031296.html

●mProjector用のActionScript
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
//1フレーム目
mWindow.center();

//2フレーム目
var pd:String = mSystem.getPathDelimiter();
var indexPath = mSystem.getSpecialFolder(“MYAPP”)+pd+”contents”+pd;
var folderPath = mSystem.getSpecialFolder(“PREFERENCES”)+pd+”Macromedia”+pd+”Flash Player”+pd+”#Security”;
if (!mFile.folderExists(folderPath)) {
mFile.createFolder(folderPath);
}
var folderPath = folderPath+pd+”FlashPlayerTrust”;
if (!mFile.folderExists(folderPath)) {
mFile.createFolder(folderPath);
}

mFile.writeString(folderPath+pd+”************.cfg”,indexPath);

//3フレーム目
mSystem.executeApplication(indexPath + “nkf.exe”, “-Ws –overwrite ” + String.fromCharCode(34) + folderPath + String.fromCharCode(34) ,”MINIMIZE”);

//4フレーム目
mSystem.openDocument(indexPath+”index.html”);
mApplication.quit();

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

こんな感じで。もはや説明不要ですね。Flashから一通りのファイル操作が可能です。
・3フレーム目 コマンドラインに引数を渡す部分の書き方は慣れが必要かも
・mProjectorからopenDocumentしたプロセスは独立するみたいで、親亀は終了しても影響ナシ。

各命令はドキュメントを見ましょう
http://www.screentime.com/software/mprojector/docs/index.html

以上、かなり強引ですが、起動用のアプリケーションをmProjectorで作る ということで、ノンインストールなお手軽さを残しつつ、ローカル配布コンテンツを作ることが出来ました

あ、参考にされた場合はくれぐれも自己責任で