VisuatlStudio2010 + .NetFramework3.5でOffice2007のアドインを作成し、Setupを下記のサイトを参考に作成したときのメモ。
かなり役に立つので必読です。
- Windows インストーラを使用して Visual Studio 2005 Tools for Office Second Edition ソリューションを配置する (Part 1 of 2)
- Windows インストーラを使用して Visual Studio 2005 Tools for Office Second Edition ソリューションを配置する: ウォークスルー (Part 2 of 2)
- Office 2003 アプリケーションの Windows Installer (msi) による配布方法
- Office 2007 アプリケーションの Windows Installer による配布方法 (VSTO v3 編)
上記の記事を参考にすることで、AddinとSetupがパッケージぽい形になるかと思います。
自分が作成した際には熟読してないがために下記の2点が抜けていました。
- レジストリへ登録の作成
- Inclusion Listへの登録処理作成
ちなみに起動条件の作成時にVSTOの日本語ランゲージパックを追加しようとしたのですがうまくいきませんでした。
Oracで取得したComponentIDが正しいかどうかすら確認できず、とりあえず、必須制限からはずしました。
VM上でインストーラのテストを行ったところインストールは完了するもののうまくアドインが動作しません。
ログを出すためにユーザー環境変数に以下の2つを追加しました。
- VSTO_SUPPRESSDISPLAYALERTS:0
- VSTO_LOGALERTS:1
ログを追いかけてみてわかったことは2つありました。
- Setup.msiでは必須コンポーネントがインストールされない
- VSTO4.0ランゲージパックのダウンロードに失敗する
1つ目は、最初に示した参考サイト内にちゃんと書かれていました。
Setup.exe をダブルクリックしてソリューションをインストールする代わりに、.msi ファイルをダブルクリックしてソリューションをインストールする方法も選択できます。このモードでは、ユーザーはブートストラップを実行しません。そのため、セットアップは依存関係を検出できず、必要に応じた必須コンポーネントのインストールも行いません。
つまり、Setup.exeでインストールしないといけないということで、Setup.exeは必須コンポーネントインストール後にSetup.msiを実行すると。
といわけで、VisualStudioのSetupプロジェクトの「必須コンポーネント」プロパティはSetup.exeに作用するだけで、別途Setup.msiが必須コンポーネントの存在しない場合に起動しないようにするための起動条件は手動で作成しなければならないとのことです。しっかり読んでいたならこんなところでは引っかからなかったのでしょうが。
2つ目はインストーラのログを読んでVSTO4.0日本語ランゲージパックのダウンロードに失敗していました。
具体的には下記の2つのURLです。
- http://go.microsoft.com/fwlink/?LinkId=158919&clcid=0x411
- http://go.microsoft.com/fwlink/?LinkId=158920&clcid=0x411
上記のURLは確かにリダイレクト先が存在しないようで、このURLはどこで設定されているかを調べてみました。
その結果、レジストリの
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\GenericBootstrapper\3.5
に記載されているPath内(多分WindowsSDK内)にあるBootstrapperと呼ばれるものの中で定義されているようです。
実際に自分の環境のBootstrapper/VSTO4.0日本語ランゲージは
- C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\VSTOR40\ja\package.xml
にURLが記載されていていました。
ここは、本来手を入れるべきではない場所でしたが実験でURLを下記のように書き換えてみたところ、無事インストールを成功させることができました。
--- before/package.xml
+++ after/package.xml
@@ -61,7 +61,7 @@
Microsoft Visual Studio 2010 Tools for Office Runtime (x86 および x64) Language Pack - 日本語のインストール中にエラーが発生しました。
http://go.microsoft.com/fwlink/?LinkId=158917
http://go.microsoft.com/fwlink/?LinkId=158918
- http://go.microsoft.com/fwlink/?LinkId=158919&clcid=0x411
- http://go.microsoft.com/fwlink/?LinkId=158920&clcid=0x411
+ http://download.microsoft.com/download/8/D/1/8D139084-948F-45F7-A014-71A90E2572EC/vstor40_LP_x86_jpn.exe
+ http://download.microsoft.com/download/8/D/1/8D139084-948F-45F7-A014-71A90E2572EC/vstor40_LP_x64_jpn.exe
とりあえず、Microsoftからの修正がでるまではこの対応ではこの対応で乗り切れると思います。
たしか、VSTO3.0でも同様にv6.0A内のBootstrapperの日本語ランゲージへのURLも同じように存在しない場所を指してたような。
(参考:まなBlog)
それと、小さな注意点がありました。
Windows7で開発していたため、package.xmlを書き換えるには管理者権限が必要でした。
ふだん使っているエディタを管理者権限で起動しなおすのは手間だと思い、メモ帳を管理者権限で立ち上げ、URLを修正したのが問題となりました。
というのも、このpackage.xmlはUTF-8のBOMなし(UTF-8N)で作成されているのですが、Windows付属のメモ帳ではBOMありでUTF-8を保存してしまうようで、
Setupをリビルドした際に下記の警告が表示され、実際インストーラはランゲージパックをインストールしない挙動に変わってしまいました。
警告: カルチャ 'ja-JP' を項目 'Microsoft Visual Studio 2010 Tools for Office Runtime (x86 and x64)' に対して一致できませんでした。カルチャ 'en' を使用します。
package.xmlをUTF-8Nで保存し、BOMがないことと文字化けしていないことを確認して再ビルドしたところ警告もなくなり、ランゲージパックのインストールも主なわれるようになりました。
また、今回は必要とならなかったけれど関連のある参考サイトもメモ