ExcelとCOM連携するアプリの依存関係(セットアッププロジェクト)
掲示板への回答ですが自分自身へのメモとしてこちらのも記載
http://bbs.wankuma.com/index.cgi?mode=al2&namber=15583
まず、じゃんぬさんのページを参考にして実際にVB2005でExcelとCOM連携するサンプルアプリを作成しました。
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click
Dim xlApplication As New Microsoft.Office.Interop.Excel.Application
xlApplication.Visible = True
System.Threading.Thread.Sleep(1000)
xlApplication.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApplication)
End Sub
次に、それに対するセットアッププロジェクトをセットアップウィザードを使って作成しました。
このときに自動的に設定されるのは次の3つでありこれはOfficeプライマリ相互運用機能アセンブリです。
- Microsoft.Office.Interop.Excel.dll
- Microsoft.Vbe.Interop.dll
- Office.dll
なお、Excel2007の場合だと、Officeプライマリ相互運用機能アセンブリを含んだときのmsiファイルは821KBになりました。Officeプライマリ相互運用機能アセンブリを除外したmsiファイルは318KBですから約500KBくらいのファイル容量増になります。
[追記]
なお、プライマリ相互運用機能アセンブリがあっても配布先にExcelがインストールされていなければ動きません。
また、プライマリ相互運用機能アセンブリ(PIA)ですが、配布先の環境を壊す可能性が高いためセットアップからは外しておき、配布先のOfficeのインストール時にPIAもインストールしてしまうのが良いようです。
http://www.microsoft.com/japan/msdn/office/office2003/OfficePrimaryInteropAssembliesFAQ.aspxより引用
----------------------------ここから
セットアップには PIA を含めないようにしてください。Office 2003 PIA をセットアッププロジェクトに含めると、エンドユーザーのコンピュータの Office 2003 所有権や PIA コンポーネントの登録が破損することがあります。その結果、アンインストール中に Office 2003 所有権や PIA コンポーネントの登録がエンドユーザーのコンピュータから誤って削除されることになります。
----------------------------ここまで