[Office] VSTOアドインをmsiで配布する
はじめに
この記事ではMicrosoft Visual Studio Installer Projects 2022を使ったMicrosoft Office向けVSTOアドインプロジェクト配布用のmsi
インストーラの作成方法を記載します。
なお、証明書は付けません。また、Office PIAを利用するレベルのアドインは想定せず、単一のアプリ(例えばExcelなど)用のアドインについてまとめます。
基本は公式ドキュメントの通りなのですが、結構長いので自分なりにまとめてみましたので、比較して活用していただければ幸いです。
VSTOアドインとは
VSTOアドインとは、.NET Frameworkを利用してExcelなどのOfficeの拡張機能が開発できるテクノロジです。
端的に言えばVSCodeでいう拡張プラグインです。VBAのようなことやより複雑なことをC#やVB.NETで、VBAマクロとして組み込まずにアプリのリボンを生やせたり出来ます。後発にWeb技術をメインとしたOfficeアドインがあり、レガシーなものになりますが、それ故古いOfficeアプリでも活用できる為、依然としてそれなりに活用性がある技術だと思います。ここではそれについては詳細を記載しません。
(補足) 単なる「発行」による配布
ググると結構引っかかった簡易な方法について記載します。
この方法は出力されたsetup.exe
を実行したら、そのフォルダにあるvsto
を直参照するようにインストールを行います。テストや少人数の内輪利用程度またはClick Onceでの配布であれば問題ないかもしれませんが、デメリットとして、配布時はユーザに例えばフォルダを固定位置に置いてもらうような運用にする必要があり、アンインストールなどもひと手間かかってしまうため、その点は考慮する必要があります。
- 対象アドインプロジェクトを右クリックして「発行」を選択する
- 公開ウィザードで「CD-ROM/DVD-ROM」を選択する
- 公開フォルダを設定する(デフォルトは「公開」)
- この値はプロジェクトプロパティの「公開」から変更可能
- 進んでいくとルートディレクトリの「公開」ディレクトリにセットアップ用の実行ファイルおよびアセンブリ一式が作成される
- 作成した公開ディレクトリを配布する。
setup.exe
を実行するとインストールが行われる
前提条件
- Windows 10~
- Microsoft Office 2013~(主にExcelを想定)
- Visual Studio 2022
- Office VSTOアドインプロジェクトが作成されているソリューション
方法
以下からの詳しい解説はMSドキュメントにあります。
この方法を使うと、他のアプリと同じようにC:\Program Files
のような場所に置かれるので、利用者は普通のアプリと同じようにインストーラ実行でインストール・「プログラムの追加と削除」を使いアンインストールを行うことができます。
環境構築
Visual Studioの拡張機能 > 拡張機能の管理からMicrosoft Visual Studio Installer Projects 2022をインストールし、Visual Studioを再起動します。(Visual Studio 2022時点)
インストーラのプロジェクトを作成
ソリューションにプロジェクトを追加します。
「Microsoft Visual Studio Installer Projects 」が提供するSetup Project
テンプレートを追加し、FooAddInSetup
などのように命名します
セットアッププロジェクトを追加
- 作成したインストーラプロジェクトを右クリックしてAdd > プロジェクト出力グループの追加で作成済みのアドインプロジェクトを選択します
-
プライマリ出力および構成に
Release
を設定して追加します。
マニフェストを追加
- アドインプロジェクトをReleaseで一度ビルドします
- インストーラプロジェクトを右クリックしてAdd > ファイルでビルドした
**.dll.manifest
と**.vsto
を参照に追加します
依存コンポーネントの追加と除外
インストーラプロジェクトを右クリックしたコンテクストメニューからプロパティを選択して開いたウインドウでPreRequirementsから以下をチェックします
-
Microsoft.NET Framework 4.x.x
(アドインプロジェクトのターゲットフレームワーク) Microsoft Visual Studio 2010 Tools for Office Runtime
ソリューションエクスプローラでインストーラプロジェクトのDetected Dependenciesを確認し、Mirosoft.Office.Tools.Common.vXX.Utilities.dll
以外のすべての*.dll
を右クリックして除外をクリックします。
ここまででソリューションエクスプローラは以下画像のような形になります。
レジストリの構成
インストーラプロジェクトを右クリックして、View > レジストリを選びます。
これはOfficeアプリがアドインを検出するために必須な項目になります。
デフォルトで設定されている以下2つを削除します。
-
HKEY_LOCAL_MACHINE\Software
にあるManufacturer
-
HKEY_LOCAL_MACHINE\Software
にあるManufacturer
次にUser/Machine Hive
にキー階層を追加していきます。
最終的に以下のようになるようにします。
Office application name
とは、例えばExcelならExcel
です。
User/Machine Hive\Software\Microsoft\Office\[Office application name]l\Addins\[add-in ID]
そこに4つの値を追加し、プロパティタブ(F4
)から設定を行います
Name | 型 | 設定値 |
---|---|---|
Description | String | 任意の説明 |
FriendlyName | String | アドイン名として設定したい名称 |
LoadBehavior | DWORD | 3 |
Manifest | String | file:///[TARGETDIR]<name>.vsto|vstolocal |
最終的には一例として以下画像のような形になります。
起動条件の構成
セットアッププロジェクトを右クリックして、View > 起動条件を選びます。
以下の操作をプロパティタブ(F4
)から行います。
レジストリの起動条件の編集
Search Target Machine
にレジストリの起動条件の追加で以下を追加します。
Key | Value |
---|---|
(Name) | Search for Office VSTO Runtime |
Property | OFFICERUNTIME |
RegKey | SOFTWARE\Microsoft\VSTO Runtime Setup\v4 |
Root | vsdrrHKLM |
Value | Version |
同様に、Search Target Machine
にレジストリの起動条件の追加で以下を追加します。
Key | Value |
---|---|
(Name) | Search for VSTO 2010 Runtime |
Property | VSTORUNTIMEREDIST |
RegKey | SOFTWARE\Microsoft\VSTO Runtime Setup\v4R |
Root | vsdrrHKLM |
Value | Version |
起動条件の編集
Launch Conditions
に起動条件の追加で以下を追加または編集します
Key | Value |
---|---|
(Name) | Verify VSTO 2010 Runtime availability |
Condition | VSTORUNTIMEREDIST >="10.0.30319" OR OFFICERUNTIME>="10.0.21022" |
InstallUrl | (空) |
Message | The Visual Studio 2010 Tools for Office Runtime is not installed. Please run Setup.exe to install the Add-in |
配置プロパティの編集
インストーラプロジェクトを選択(またはF4
)してプロパティタブを開き、以下などを任意で設定します
Property | 説明 |
---|---|
Author | 作者名 |
Description | 説明 |
Manufacturer | 作成者。ここの名前がインストール時のProgramFiles\XXXX\YYYY のXXXXに相当する。基本は組織名など |
ProductName | 製品名。ここの名前がインストール時のProgramFiles\XXXX\YYYY のYYYYに相当する |
TargetPlatform | ターゲットプラットフォーム。基本はx64 で良いでしょう |
ビルドする
構成をReleaseに設定してからインストーラプロジェクトを選択し、右クリックからビルドを選択することで「Release」フォルダに「setup.exe」と「XXX.msi」が出力されます。
あとはそのフォルダをリネームしてzipなどにすれば、基本的に色々な人が使える形に配布できます。
Discussion