2013年1月18日金曜日

AppInventor Portable for Windows(まとめ) Part7

 App Inventor Portable for Windowsという実験ですが「管理者権限で実行」を使わないところまで来ましたのでそろそろまとめたいと思います。

(ご注意)
 このエントリでバッチファイルを公開しますが、動作検証は未だ十分とは言えない状況にあります。一般ユーザ権限とはいえレジストリの変更を伴いますのでご利用は自己責任にてお願いします。
 バッチファイルのレジストリ変更部分を見て意味が分からない方はまだご利用にならない方がよろしいかと思います。レジストリが壊れても自力で修復できる方のみ人柱erとしてご利用いただきフィードバックなどいただければ幸いです。
 このエントリで順を追って利用手順を説明しますので、必ずそれを熟読してからご利用ください(Javaのインストール作業は端折っていますのでここが分からない人は現時点では利用されない方がよろしいかと思います)。























ちなみに動作確認済みの環境は以下の通りです。

  • WindpwsXP SP3(32bit) (※エミュレータの起動に失敗します。対策は追記参照)
  • Windows7 Home Premium(64bit)
  • Windows8 Pro (64bit)
  • Windows8 Enterprise評価版(64bit)

それではUSBメモリの作成手順から改めてご説明します。




■準備するモノ

●App Inventorサーバ、Buildサーバを起動しない場合
・WindowsXP、Vista、7、8の32bit/64bit版


●App Inventorサーバ、Buildサーバを起動する場合
・WindowsVista、7、8の64bit版

(※追記)最新情報ですが、現在は32bitOSでもサーバ起動できることが確認出来ています。ただし、バッチファイルの書き換え箇所が増えます)

・PCのメモリはサーバを起動する場合は4GB以上推奨(検証環境では2GBでも動作しています)

・USBメモリ(1GB以上あれば大丈夫です)

AI4A-Configuratoins

GoogleAppEngine SDK for Java

JavaSE JDK(JREではダメです)64bit
 Java6、7のいずれも動作しますが、できるだけJava7の最新版をご利用ください。今回の例ではJava7のみ使っています。

AppInventor セットアッププログラム(Windows用)

・豆腐化対策用フォントファイル

AIPortableXPto8WithServer.bat バッチファイル(from GitHub)



■事前準備

USBメモリを作るために必要なファイルを用意するために次のものをPCにインストールしてください(作業が終わったらアンインストールします。特に公開JREが残してある場合は、BlocksEditor起動時に利用されるjavaws.exeはHDD側にインストールされているものが利用されます。特に問題はありませんが)。

・Java7 SE JDK(JREではダメです)64bit/32bitそれぞれ
・App Inventor セットアッププログラム

このインストールされたフォルダ構成をUSBメモリにコピーすることになります。

■USBメモリのフォルダ構成(ドライブ名は環境によって変化します)
X:\AIPortable
                     \AI4A                                                       -(1)
                     \appengine-java-sdk-1.7.3                   -(2)
                     \AppInventor                                           -(3)
                     \jdk1.7.0_11                                           -(4-a)
                     \jdk1.7.0_11_32                                    -(4-b)
                     AIPortableXPto8WithServer.bat          -(5)

(1)はAI4A-Configuratoinsを展開したものをコピーしてください。この中のファイルでは2つほどAppInventorサーバとBuildサーバの起動バッチファイルを以下のように書き換える必要があります。

■AI4A\AppEngine\startAI.cmd

REM set the location of the App Engine
set AEJSDK=..\..\appengine-java-sdk-1.7.3


■AI4A\BuildServer\launch-buildserver.cmd

REM set the location of your jarsigner
set JARSIGNERLOCATION=%JAVA_HOME%\bin\jarsigner.exe


(2)はGoogleAppEngine SDK for Javaを展開したそのままの構成のものをコピーしてください。

(※追記)バージョン1.7.4でも問題ないことを確認済みです。

(3)はWindows用のApp InventorセットアッププログラムをWindowsにインストールし、C:\Program Files (x86)\AppInventor(64bitWindowsの場合)フォルダ・ファイル構成をそのままコピーしてください。

(※追記)ここで本エントリ最後に記載されているバッチファイルの書き換えをすることを推奨します。その事により、WindowsXP/Visata/7/8で共通のSDカードイメージが参照されるようになります。

(4-a)はApp InventorサーバおよびBuildサーバ起動用のため64bit版のJDKをPCにインストールした後、こちらもC:\Program Files\Java\jdk1.7.0_11フォルダをそのままコピーしてください。

また、豆腐化対策フォントファイルをこのフォルダ内のjre\lib\fontsフォルダ以下にコピーしておいてください。

(4-b)はBlocksEditorを起動するためのJava実行環境なので32bit版のJDKをPCにインストールした後、こちらもC:\Program Files (x86)\Java\jdk1.7.0_11フォルダをjdk1.7.0_11_32と変更してコピーしてください(32bit版と明示するため)。

また、豆腐化対策フォントファイルをこのフォルダ内のjre\lib\fontsフォルダ以下にコピーしておいてください。

(5)は起動バッチファイルです。このバッチファイルは一般ユーザ権限(管理者権限を持たないユーザ)で動作します

以上のフォルダ構成は以下のようになると思います。






■使用方法


●環境設定

以下では話を分かりやすくするために、実行環境にはJava(JDK/JRE共に)がインストールされていないこと、App Inventorセットアッププログラムが導入されていないことを前提条件に説明します(OSはWindows7HomePremium64bit)。

また、今回はApp Inventorサーバ、Buildサーバを起動しないこととします(起動する場合については別エントリにします)。

上記の前提条件の場合、バッチファイル内で設定対象となっているレジストリキーは全て存在しないハズです。ですので、それらのレジストリキーについて全て登録することになります。

バッチファイルをダブルクリックして実行するとコマンドプロンプトが開き、以下のようになると思います。




上記の画面になっていればPortable設定は完了していますのでコマンドプロンプトはそのままか最小化しておき、MIT App Inventorを使ってみてください。

また、この時のUSBメモリのフォルダを見てください。


これまでのエントリではHDD側のユーザホームに作成するハズの.appinventorフォルダが作成されているのが分かると思います。

BlocksEditorが起動される際、レジストリ設定によってJavaVMが認識するユーザホームの位置はこの場所を見るようになります。これにより、BlocksEditorは各種関連コマンドがUSBメモリにあると認識できるようになります。

App Inventorを利用しながらUSBメモリの様子を見ていただくと分かりますが、

  • BlocksEditorを起動する時
  • Androidエミュレーターを起動する時
などにUSBメモリのアクセスランプLEDがチカチカしていればPortable環境設定に成功しています。


レジストリキーの設定部分を見ると「エラー」とありますが、これは変更対象となるレジストリキーが存在しなかったことを意味していますので心配しないでください。

その存在チェックによって得られる%ERRORLEVEL%を判定してレジストリキー変更処理の実行を行なっています。この例では全てのキーが存在しませんが、存在していた場合は該当レジストリを一時バックアップのためexportするようになっています。

●環境設定解除

ひと通りApp Inventorでの開発作業が終了して、USBメモリを抜きたいと思ったらコマンドプロンプトを表示して、適当なキーを押してください。


登録されていたレジストリキーの全てを解除して、最後にUSBメモリから起動されていたadb.exeを強制終了します(これをしないとUSBメモリが抜けません)。もう一度何かキーを押せばコマンドプロンプトは閉じます(これが不要な方はバッチファイルの最後のpauseを削除してください)。

USBメモリ上に作成された.appinventorフォルダもこの際に削除されます。これは別のPCに移動した際にドライブ構成が変化してドライブ名が変更になっても問題が起きないようにするためです。

以上が管理者権限なしでのポータブル化の解説になります。

問題点等ございましたらフィードバックいただければ幸いです。

なお、このバッチファイルをJavaやApp Inventorセットアッププログラム導入済みの環境で実行した場合どうなるかですが、これは次回のエントリで触れたいと思います(結論としては筆者の環境では問題なく動いています)。

(※追記)
WindowsXP環境でBlocksEditorからエミュレータが起動できない問題があることに気付きました。
これはエミュレータ起動時に参照されるPATH中に空白が入ったもの(本来のユーザのHOMEPATH)が参照されてしまうことが原因です。

この問題は次のバッチファイルを書き換えることで解決可能です。

●AIPortable\AppInventor\commands-for-Appinventor\run-emulator.bat
・書き換え箇所
call :SetAppinvDir "%HOMEPATH%"


call :SetAppinvDir "%~dp0\..\..\"

これで参照先がUSBメモリ内の.appinventorフォルダがある位置と同じになります。


Windows7や8の場合も同じ場所の方が都合が良いので該当バッチファイルはPortable環境を作成する際に変更してしまうことをオススメします。

0 件のコメント:

コメントを投稿

おすすめ書籍