2009年11月25日水曜日

Visual Studio 2008 Tools for Office (VSTO V3) とOffice2007

先回Excel2003で作ったアプリをExcel2007に作り変え、運用PCで動作したので備忘録へ。

アプリの変更は、元となるExcel2003(拡張子.xls)をExcel2007(拡張子.xlsx)で作り直し、新規ソリューションを作成。内部処理は全てコピペで終了。特に違いは何もありません。唯一の違いは・・・

 配置

2003Officeソリューションは.msiを使って配置しましたが、2007OfficeソリューションだとClickOnce配置を推奨している様に見えますね?(ClickOnceの説明が多い)。ClickOnceはdllプログラム類を共有し、ドキュメントは利用者毎に管理するようです。
http://blogs.msdn.com/tsmatsuz/archive/2008/03/31/vsto-v3-windows-installer.aspx

しかしClickOnceは、客先環境を設定/テストするだけで結構面倒な気がします。ClickOnceのバージョン管理も良いとは思いますが、どんどんバージョンが出来てしまう、客には扱いづらそう、こちらからのコントロールもやりにくい感じ。IISも出てきます。


WindowsInstallerによる.msiセットアップが全てにおいてやり易いと考え、今回も.msiセットアップを選択しました。結果、何の問題なく簡単に配置PCでインストール→問題なく動作。それは上記サイトのお陰です。大変参考になりました。
 
ただ動きが異なっていた部分があり、参考サイトでは中盤でエラーが発生します。Inclusion List の問題とされています。そのため、8.でInclusion List 更新ロジックを、プロジェクト追加し解決を図っています。
しかし・・・、このロジックを追加する前に、試しに配置PCでインストールしてみたところ、エラーなく動いてしまいました。何かのパッチで動きが変わった?不明です。
 
理由の調査は行っていません。今回は一先ず、結果オーラオイ、と言う事で次の開発へ進みます。問題が出た時点で調べてみようと思います。
 
 
ちなみに今回2007Excelへ作り変えの原因となった、配置先PCにインストールされているOfficeのエディションですが、VSTO V3アプリと言う事で、2007OfficeParsonal(パーソナルエディション)で、無事稼働できました。


必須コンポーネント
  (配置プロジェクト→右クリック→プロパティ→必須コンポーネント)
・Windowsインストーラ3.1
・.NetFramework3.5
・MicrosoftOffice2007PrimaryInterropAssemblies
・VisualStudioTools for the OfficeSystem3.0RuntimeSP1(言語パック含む)

上記必須コンポーネントをチェックすると、以下がないとコンパイラーが警告を出力。
・.NetFrameworkClientProfile
しかし以下理由1.4により無視しました。
http://download.microsoft.com/download/e/3/2/e3240f7a-9d38-4da0-9228-dbe73e7b9d61/NETFX35_ClientProfile_Readme.htm



ちなみに今回、新たなソリューションを作成しベースは拡張子.xlsxの2007Excelとしましたが、何かあっては困るので、並行して拡張子.xlsの2007Excelソリューションも作成しています。どちらも問題なく動作します。2007Excel拡張子は特に問題にはならないという事を、机上ではなく確認出来ました。

0 件のコメント:

コメントを投稿