4

Wordアドインコンポーネントと、コンポーネントをインストールするためのVisualStudioセットアッププロジェクトを作成しました。

Office 2003がインストールされているクリーンなマシンでは、アドインコンポーネントをWordにロードすることはできないようです。

問題をグーグルで検索すると、これはアセンブリが信頼されていないことが原因であることがわかります。コマンドラインツールを使用して、アセンブリに完全な信頼を与えました。

caspol -af AssemblyName.dll

これによる違いはなく、コンポーネントはまだWordに読み込まれていません。caspolは、「すべてのGACアセンブリは常に完全な信頼を取得するため、完全な信頼リストは意味がなくなります。セキュリティポリシーで使用されるアセンブリをGACにインストールして、信頼できることを確認する必要があります」というメッセージを出力します。

インストーラーを変更してアセンブリをGACに配置すると、Wordに正しくロードできるようになります。ただし、コンポーネントは将来、他の.NETアプリケーション間で共有される共通のアセンブリを使用する必要があり、これらのライブラリをGACに追加することは望ましくありません。

GACの外部にインストールしたときにコンポーネントをロードできるようにセキュリティを設定する方法を知っている人はいますか?

4

3 に答える 3

3

次のコマンドを手動で実行してセキュリティを設定し、単語が GAC の外部からアセンブリを実行できるようにすることができます。これにより、アセンブリの実行を許可する完全な信頼を持つ新しいグループが作成されます。

caspol.exe -u -addgroup All_Code -url "\*"  FullTrust -n AssemblyName.dll

Microsoft は、MSDN への次のサイトリンクに、インストーラーのカスタム アクションの例を示しています。これにより、このコマンドをインストーラーのカスタム アクションとして含めることができます。

于 2009-02-17T11:23:15.507 に答える
2

アセンブリを GAC にインストールする必要はなく、アドイン アセンブリにセキュリティ ポリシーを定義する必要もありません。

Office 2003 で .NET 2.0 を使用していますか? Office 2003 と Office XP の両方に、.NET 2.0 アドインの読み込みに関する問題があります。それらは .NET 1.1 Framework を使用して読み込まれます (マシン上に存在する場合、その可能性は非常に高いです)。したがって、Microsoft .NET Framework 2.0 (KB908002) の共有アドイン サポート更新プログラムを使用して Office インストールにパッチを適用する必要があります。

このパッチは、インストーラーの前提条件に必ず含める必要があります。

詳細については、この質問への回答をご覧ください。

そしてもちろん、ターゲット システムに正しいバージョンの PIA がインストールされている必要があります (この点をほとんど忘れていましたが、PIA が間違っているか見つからないことが、アドインが読み込まれない主な問題の 1 つです)。

更新: KB908002 では、セットアップ プロジェクトの前提条件ダイアログに共有アドイン サポート更新を追加するために、PC に VS 2005 が必要です。この場合、次の回避策を使用する必要があります。

Visual Studio 2008 を使用している場合は、次の回避策に従って、 KB908002 を前提条件の追加ダイアログに表示する必要があります。

  1. Visual Studio 2005 がインストールされているマシンに修正プログラムをダウンロードしてインストールします。
  2. C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\BootStrapper\Packagesに移動し、KB908002 フォルダーを見つけます。
  3. Visual Studio 2008 がインストールされているマシンにログオンし、KB908002 フォルダーをC:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packagesにコピーします。
  4. ここで、Visual Studio 2008 マシンの前提条件リストに移動すると、修正プログラムがリストされていることがわかります。

VS 2005 をまったく必要としない別のオプションは次のとおりです。

  1. 修正プログラムを一時フォルダーにダウンロードします。
  2. コマンド プロンプトを開き、修正プログラムが配置されているフォルダーに移動し、次のコマンドを起動して、自己解凍型インストール ファイルからファイルを抽出します。

    vs2005-kb908002-enu-x86.exe /C /T:C:\KB908002\
    cd \KB908002
    

    これで、フォルダー C:\KB908002 には、vs2005-kb908002-enu-x86.exe /C /T:C:\tmp\KB908002\tmp、setup.exe、bootstrapper.msi の 3 つのファイルが含まれます。

  3. bootstapper.msi の内容に関心があるため、このファイルの内容を抽出します。

    msiexec /a bootstrapper.msi /qb TARGETDIR=C:\KB908002\tmp\
    cd tmp
    
  4. 最後に、抽出したパッケージ フォルダーを Windows SDK のブートストラップ フォルダーにコピーします。

    xcopy /E "C:\KB908002\tmp\SDK\BootStrapper\Packages" "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages"
    
  5. ここで、Visual Studio 2008 の前提条件リストに移動すると、修正プログラムが一覧表示されます。

于 2009-02-16T16:28:17.607 に答える
1

アドインアセンブリをGACに配置することは必須ではないと思います。展開のステップが欠けているだけだと思います。

MS Wordなどのオフィスアプリケーションは、特定のレジストリエントリを読み取ることによってアドインをロードします。ほとんどの場合、展開中にこれらのエントリを作成しません。

このすべてのレジストリビジネスの詳細については、この記事を参照してください。また、Officeアドインの一般的な展開については、この記事を参照してください。

于 2009-02-16T16:15:05.563 に答える