Office ソリューションの配置のトラブルシューティング
適用対象: Visual Studio
この記事では、Office ソリューションを展開するときに発生する可能性がある一般的な問題を解決する方法について説明します。
この記事の情報は、ドキュメント レベルのプロジェクトと Visual Studio Tools for Office (VSTO) アドイン プロジェクトに適用されます。 「Office アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。
イベント ビューアーを使用した Office ソリューションのトラブルシューティング
Windows のイベント ビューアーを使用すると、Office ソリューションのインストール時またはアンインストール時に Visual Studio Tools for Office ランタイムでキャプチャされるエラー メッセージを表示できます。 イベント ロガーからのこれらのメッセージを使用して、インストールと配置の問題を解決できます。 詳細については、「Office ソリューションのイベント ログ」を参照してください。
アセンブリ名を変更すると競合が発生する
ソリューションを配置した後に、[プロジェクト デザイナー] の [アプリケーション] ページで [アセンブリ名] の値を変更すると、発行ツールによってセットアップ パッケージが変更され、1 つの Setup.exe ファイルに 2 つの配置マニフェストが存在することになります。 2 つのマニフェスト ファイルを配置すると、次のような状況が発生する場合があります。
- エンド ユーザーが両方のバージョンをインストールすると、アプリケーションは両方の VSTO アドインを読み込みます。
- VSTO アドインがインストールされている状態でアセンブリの名前を変更すると、エンド ユーザーが更新を受け取ることはなくなります。
これらの状況を回避するには、ソリューションを配置した後にソリューションの [アセンブリ名] の値を変更しないようにします。
更新プログラムのチェックに長い時間がかかる
Visual Studio 2010 Tools for Office ランタイムには、マニフェストやソリューションをダウンロードするときのタイムアウト値を設定するために管理者が使用できるように、レジストリ エントリが用意されています。
タイムアウト値を設定する方法
レジストリで、次のキーに移動します。
HKEY_CURRENT_USER\Software\Microsoft\VSTA
AddInTimeout サブキーに、タイムアウト値をミリ秒単位で設定します。
[AddInTimeout] サブキーが存在しない場合は、DWORD として作成します。
ネットワーク ファイル共有に対する更新または発行ができない
ネットワーク ファイル共有にある Office ソリューションは、更新の発行プロセスでソリューションの Setup.exe ファイルがロックされると、誤解を招くメッセージを表示することがあります。 たとえば、"'setup.exe' を Web サイトに追加できません。 ファイル 'setup.exe' はこの Web サイトに既に存在します。" というメッセージが表示されることがあります。
ファイルがロックされないようにするには、エンド ユーザーに対して共有を読み取り専用に設定します。 ただし、ドキュメントが共有されている場合は、エンド ユーザーも読み取り専用になります。
Microsoft Office の必須コンポーネントがインストールされていない
セットアップ パッケージには、Office ソリューションと共に配置される必須コンポーネントとして、.NET Framework、Visual Studio Tools for Office ランタイム、および Office プライマリ相互運用機能アセンブリを追加できます。 プライマリ相互運用機能アセンブリをインストールする方法の詳細については、「Office ソリューションを開発できるようにコンピューターを構成する」および「方法: Office のプライマリ相互運用機能アセンブリをインストールする」を参照してください。
Localhost を使用して発行するとインストールに問題が生じることがある
ドキュメント レベルのソリューションの発行場所またはインストール先として http://localhost
を使用した場合、この文字列は [発行ウィザード] で実際のコンピューター名に変換されません。 この場合は、ソリューションを開発用コンピューター上にインストールする必要があります。 配置ソリューションに開発用コンピューター上の IIS を使用させるには、HTTP、HTTPS、FTP のすべての場所について、localhost ではなく完全修飾名を使用します。
更新済みのアセンブリではなくキャッシュしたアセンブリが読み込まれる
プロジェクトの出力パスがネットワーク ファイル共有上にあり、アセンブリが厳密な名前で署名されていて、カスタマイズ アセンブリのバージョンが変更されていない場合、.NET Framework アセンブリ ローダーである fusion は、キャッシュしたアセンブリのコピーを読み込みます。 アセンブリを更新しても、これらの条件が満たされるとキャッシュしたコピーが読み込まれるため、プロジェクトを次回実行するときに更新は表示されません。
Visual Studio を構成し、プロジェクトを実行するたびに fusion がアセンブリをダウンロードするように設定できます。
キャッシュされたコピーを読み込む代わりにアセンブリをダウンロードする方法
- メニュー バーで、 Project、 <ProjectName> プロパティを選択します。
- [ アプリケーション ] ページで、[ Assembly Information を選択します。
- [アセンブリのバージョン] のリビジョン番号、3 番目のフィールドを、ワイルド カード (*) に設定します。 たとえば、"1.0.*" です。 次に、[OK] ボタンを選択します。
アセンブリのバージョンを変更したら、厳密な名前でアセンブリに署名します。fusion が最新バージョンのカスタマイズを読み込むようになります。
Note
Visual Studio 2017 以降では、アセンブリのバージョンでワイルド カードを使用しようとすると、ビルド エラーが発生します。 これは、アセンブリのバージョンのワイルド カードによって MSBuild Deterministic 機能が損なわれるためです。 ワイルドカードをアセンブリのバージョンから削除するか、決定性を無効にするよう指示されます。 Deterministic 機能の詳細については、「MSBuild プロジェクトの共通プロパティ」および「ビルドのカスタマイズ」を参照してください
URI に US-ASCII 以外の文字が含まれているとインストールが失敗する
Office ソリューションを HTTP、HTTPS、または FTP のいずれかの場所に発行する場合、US-ASCII ではない Unicode 文字をパスに含めることはできません。 これらの文字を使用すると、セットアップ プログラムで一貫性のない動作が実行されることがあります。 インストール パスには、US-ASCII 文字を使用してください。
開発用コンピューターにソリューションを発行およびインストールすると手動でアンインストールするよう求めるプロンプトが表示される
Office ソリューションをビルドすると、そのビルド バージョンが自動的に登録されます。 開発用コンピューターに同じソリューションを以前に公開してインストールしたことがある場合、Visual Studio Tools for Office ランタイムは、ソリューションが次にビルド、再構築、または公開された後に、発行済みバージョンとビルド済みバージョンのインストール パスが異なっていることを検出します。 "現在他のバージョンがインストールされており、この場所からアップグレードすることはできないため、このカスタマイズをインストールすることはできません" というエラー メッセージが表示されます。レジストリ キーは、ソリューションがビルドされるたびに更新されます。 したがって、新しいバージョンを発行、デバッグ、または実行する前に、以前のバージョンをアンインストールする必要があります。
このメッセージが表示されないようにするには、開発用コンピューターで別のユーザー アカウントを作成して配置をテストします。 または、次回のソリューションの発行、デバッグ、またはリビルドの前に、コンピューター上にインストールされているプログラムの一覧からそのバージョンをアンインストールできます。
ソリューションをインストールするときキャッチされない例外やメソッドが見つからないエラーが発生する
配置マニフェスト (.vsto ファイル)、Office アプリケーション、ドキュメント、またはブックを開いて Office ソリューションをインストールすると、次の状態に対するエラー メッセージが表示される場合があります。
- メソッドが見つからない
- MissingMethodException
- キャッチされない例外
これらのエラー メッセージが表示されないようにするには、セットアップ プログラムを実行することにより、ソリューションをインストールします。
セットアップ プログラムを実行せずにソリューションをインストールする場合、インストーラーでは、必須コンポーネントの有無のチェックや、それらのインストールは行われません。 セットアップ プログラムは、正しいバージョンの必須コンポーネントをチェックし、必要に応じて、これらをインストールします。
InstallShield Limited Edition プロジェクトをビルドした後にアドイン用マニフェスト レジストリ キーが変わる
VSTO アドイン セットアップ プログラムに含まれるマニフェスト レジストリ キーが、InstallShield Limited Edition プロジェクトのビルド時に .vsto から .dll.manifest に変わる場合があります。
この問題の発生を防ぐには、InstallShield Limited Edition プロジェクトを別のソリューションで作成するか、レジストリ キー値として VSTO アドイン名が含まれる CompanyName.AddinName を使用します。
Office ソリューションの ClickOnce インストーラーがプライマリ相互運用機能アセンブリをインストールしない
Office ソリューション用に ClickOnce が作成するセットアップ プログラムを実行すると、Office プライマリ相互運用機能アセンブリ (PIA) がまだインストールされていない場合のみ、PIA のインストーラーが実行されます。
セットアップ プログラムで PIA が正しくインストールされない場合、インストール ディレクトリから o2007pia.msi というインストーラー ファイルを実行して PIA を手動でインストールします。
Office ソリューションを再インストールすると、引数が範囲外という例外が発生する
Office ソリューションを再インストールするときに、 ArgumentOutOfRangeException 例外が発生し、"指定された引数は、有効な値の範囲内にありません" というエラー メッセージが表示される場合があります。
インストール場所の URL の大文字と小文字が違っていると、この状況が発生します。 このエラーは、たとえば、最初に http://fabrikam.com/ExcelSolution.vsto
から Office ソリューションをインストールし、2 回目に http://fabrikam.com/excelsolution.vsto
を使用した場合に表示されます。
このエラー メッセージが表示されないようにするには、Office ソリューションのインストール時に、同じ大文字と小文字の組み合わせを使用します。
Web で配置マニフェストを開いても ClickOnce ソリューションをインストールできない
ユーザーは、Web で配置マニフェストを開くことにより、Office ソリューションをインストールできます。 ただし、一部のインターネット インフォメーション サービス (IIS) がインストールされていると、.vsto ファイル名拡張子はブロックされます。 IIS を使用して Office ソリューションを配置する前に、IIS で MIME の種類を定義する必要があります。
IIS 7 で MIME の種類を定義する方法については、「MIME の種類を追加する (IIS7)」をご覧ください。
拡張子を .vsto に、MIME の種類を " application/x-ms-vsto" に設定します。