2012年2月20日月曜日

SimpleBrowser でIE6 Webアプリの延命について(Windows7 で IE6 を延命!?)


SimpleBrowser でIE6 Webアプリの延命について(Windows7 で IE6 を延命!?)


SimpleBrowser でIE6 Webアプリの延命について、今回は書きたいと思います。( ThinApp との連携を中心に書きます。)

まずは、こちらのリンクから SimpleBrowser ver2.7.1.0をダウンロードして試してみてください。(フリーウェア)
http://nilbrowser.web.fc2.com/
英語のページはこちら
http://nilbrowser.web.fc2.com/indexen.htm
SimpleBrowser は、IE6に見た目が似たブラウザです。
Windows7 でも動作します。IEコンポーネントを利用しているので IE8 のレンダリングエンジンを利用しますが、IE8 が持っている互換モード(IE5/6 の互換レンダリング Quirks モード)を強制的に利用する機能があります。
※必ずreadme.txtを確認してください。

前提として、「 Windows7 で IE6 を動かしたい」というニーズは本当にたくさんあります。
MSから提供される新しいサービス、製品もサポートされるブラウザからIE6がことごとく、
外れています。
SharePoint 2010 では IE6 はサポートブラウザから外れました。
理由は様々ありますが、IE6 には将来がありません。というか IE9 もリリースされていますし
もう少しで IE10 もリリースされますのでIE自体は順調に進化しています。

IE6 は、レンダリングや CSS の解釈に癖が強く、多くの Web開発者 から煙たがられるのも事実です。
IE6 のためだけに、HTML や CSS、JS を用意するのは、本当に大変みたいです。
また、Javascript の実行速度も、最近のモダンブラウザに比べるのが申し訳ないくらい
遅いです。遅すぎます。

という訳で、私も新しい環境である Windows7 では、最新のブラウザ(IE8/9 やFirefox、Google Chrome等)を利用するのが最も良いと思いますし、生産性の面や堅牢性、セキュリティの観点からも
外部のサイトを利用するのには、もはやIE6はお役御免だと思っています。

しかしながら、IE6 を利用したいというニーズはとても多くあり、私が以前にPostした内容は
このBlogの中で一番人気です。(笑)
「 Windows7 で何故 IE6 を利用したいのか?
http://tunemicky.blogspot.com/2011/11/windows7ie6.html


前置きが長くなりましたが、Webシステムを IE6 以外の選択肢でも
延命することが可能だったので、今回その中核を担った
SimpleBrowser を利用した具体的な内容について書きたいと思います。

※実際の話しをもとにしている風の創作的フィクションですので
 ご注意ください。m(__)m
 IE6をまったく利用していないので、IEのライセンス的な部分も考えなくてOKだと
 個人的に思います。

 SimpleBrowser.exeのファイル名をiexplore.exeに変更していますが。。。




初めに、どんな問題があったのか - その課題
対象のIE6 Webアプリの課題は以下でした。
  1. ActiveX の互換問題
  2. 連携する MS-Office のバージョン問題
  3. 一覧画面の情報をエクスポートする(htmファイル)とIE8が起動する。
幸いな事に、「表示が崩れる」の課題は"なく”、そのシステムを利用するための流れは、こんな感じでした。
・1.初めにIEでWebシステムにアクセスする
・2.ログイン画面がポップアップされる。アプリ自体は、ActiveXの中で実行される(通常のWinアプリと似た独自の画面)
・3.帳票を出力する際に、Excel形式(xls)を指定したフォルダに出力する。
出力後にExcelが自動的に起動する。
・4.帳票を出力する際に、IE形式(htm)を指定したフォルダに出力する。
  出力後にIE8が自動的に起動する問題(IE8のタブ型UIを使いたくない。。。)



この問題を解決するためのアプローチ(パッケージ戦略)
1.SimpleBrowserを仮想化し、初めに開くページを設定する(IEは仮想化しない)
2.ActiveXを仮想化する
3.Excel2007を仮想化する。
Excel形式の帳票出力では仮想化したExcel2007を起動する。
ネイティブ側からXLSファイルをダブルクリックした際に仮想Excel2007上で
XLSファイルが開くのを阻止する。
※ネイティブ側にインストールされているExcel2010で開く。
4.IE形式の帳票出力でIE8が起動してしまう問題を回避する。



この仮想化作業のポイント等

【利用環境】
Windows7 SP1 32Bit
Excel2010

【パッケージング環境】
クリーンな WindowsXP SP3
(Windows Updateが全て終わっている状態、最新の状態にしておく)
ThinApp4.7

【必要な物】
Office2007 のメディア(ボリュームライセンス版)
プロダクトキー
ActiveXのインストーラー一式
SimpleBrowser

【ポイント】
・クリーンな環境と Office2007 のCD-ROMを入れるタイミングに注意
・MS明朝 の文字化けを回避するために、MS明朝 「MSMINCHO.TTF」を%Fonts%から削除
・IE形式の帳票出力でIE8が起動してしまう問題への対処
 SimpleBrowserの名前をiexplore.exeに変更してしまう。
 プロジェクトフォルダを以下の状態にしてしまう。
 %ProgramFilesDir%\Internet Explorer
 にSimpleBrowser.exeを設置し、名前をiexplore.exeに変更する。
 ※htmファイルをShellExecute(VBだとRun)コマンドで開いているため
  既定のhtmに関連付けされた
アプリ(iexplore.exe)が起動します。
  そこで、SimpleBrowserの名前を変えてしまう事で対処しています。
・初めに開くサイトを指定する。( http://hogehoge.com/login)
 Package.iniのSimpleBrowserのセクションを以下のようにします。
  CommandLineを追加する。
[SimpleBrowser.exe]
;Source=%ProgramFilesDir%\Internet Explorer\SimpleBrowser.exe
Source=%ProgramFilesDir%\Internet Explorer\iexplore.exe
CommandLine="%ProgramFilesDir%\Internet Explorer\iexplore.exe" http://hogehoge.com/login


ネイティブ側からXLSファイルをダブルクリックした際に仮想Excel2007上で
XLSファイルが開くのを阻止する。
ネイティブ側にインストールされているExcel2010で開く。
 Package.iniの[BuildOptions]セクションに IgnoreDDEMessages=1
 を追加する。コメントアウトされているのでコメントを外せばOK




大まかなキャプチャ作業の流れは、以下を参照ください。

Office2007 仮想化レシピ入門編( ThinApp )


http://tunemicky.blogspot.com/2011/11/office2007thinapp.html


違うのは、
初めにExcel2007をインストールしてから、
ActiveXのインストールを行います。
その後、SimpleBrowserをIEのインストールされている場所にリネーム後に上書きしてしまいます。


最後に、 【ポイント】 にある対処を確実に行います。
以上です。





【IgnoreDDEMessages=1について

突然現れた、 IgnoreDDEMessages
ですが、VOSに追加された便利機能です。
(ThinApp4.6.2から追加されたパラメータ)

ネイティブ環境からのDDEサーバーへの接続を制限するオプションです。
今回の要件は、デスクトップにあるXLSファイルをダブルクリックした場合に
ネイティブにあるExcel2010で必ず開きたい。
という事でした。
この対処をしないとどうなるかと言うと、仮想Excel2007が起動したままの状態で
デスクトップにあるXLSファイルをダブルクリックすると
仮想Excel2007の中でXLSファイルが開くことになります。

流れとしては、デスクトップのXLSファイルをダブルクリックすると、
エクスプローラーが仮想Excel2007が提供しているDDEサーバーに接続して
ファイルを開く操作を依頼します。

IgnoreDDEMessagesを有効にするとネイティブ環境のエクスプローラが
仮想Excel2007にDDE接続できないようにVOSにより制限されます。
その結果、ネイティブExcel2010で、そのファイルが開くようになります。

このファイルの関連付けに関する概要は、以前に投稿した
ファイルをダブルクリックしてからアプリが起動するまで
を参照ください。DDEについて簡単に解説しています。