ExcelDNA と C# を使用して Excel XLL を開発しました。展開のテストを開始したいところですが、実際に機能する手順を提供する多くの情報が見つかりません。
私のプロジェクトは、ExcelDna を参照するクラス ライブラリとして開発されました。.dna ファイルには、すべてのリソースをパックされたバージョンの XLL (つまり、Pack="true" 属性) にパックする以下のコードがあります。
<DnaLibrary Name="ExcelXLL" RuntimeVersion="v4.0" Language="C#">
<ExternalLibrary Path="ExcelXLL.dll" LoadFromBytes="false" Pack="true" />
パックされた XLL をパス内のターゲット マシンに展開したいと考えています。
%APPDATA%\Microsoft\AddIns
XLL を Excel に自動的に登録するには、ユーザーが使用している Excel のバージョンに応じたレジストリ キーを追加する必要があります。
たとえば、私のコンピューター (Excel 2007 32 ビットを実行している Windows 7 64 ビット) では、次のパスにレジストリ キーを追加する必要があります。
HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Options\
キーは、名前が OPEN (または OPEN1、OPEN2 など) で、値が /R "ExcelXLL-packed.xll" の REG_SZ 型になります。
しかし、2つの問題があります。1 つ目は、ユーザーが正しいパスを取得する必要がある Excel のバージョンを決定することであり、2 つ目は、作成する必要がある正しい OPEN バージョンを決定することです (たとえば、ユーザーが既に OPEN、OPEN1、および OPEN2 を持っている場合、私はOPEN3 キーを作成します)。
Setup and Deployment プロジェクトまたは InstallShield LE プロジェクトのいずれかを使用してインストールを行おうとしていますが、その方法がわかりません。誰かがこれを行う方法またはそれを行うより良い方法を知っていますか?
編集1:
私はこれについて多くの調査を行い、いくつかの Windows インストーラーを見てきました。
Package and Deployment および InstallShield LE では、インストーラー クラスをクラス ライブラリに配置し、プロジェクトの出力をインストールにバンドルすることで、インストール/アンインストールを機能させることができます。このアプローチでは、インストーラー クラスを使用してレジストリ キーの挿入/削除を処理します。私が抱えている問題は、ユーザーが新しいインストールを実行する前に最初にアンインストールする必要があることです (更新機能はありません)。
Setup Factory デモ バージョンをダウンロードし、インストール/更新を実行できますが、フレームワーク チェックを実行できません (デモには同梱されていません)。また、アンインストールは失敗します (ただし、もう少し調査すれば、これを機能させることができるかもしれません)。
WiX インストーラーの使用に興味がありますが、WiX を使用してデプロイを実行する方法のサンプルがあるかどうか知りたいです。また、インストーラー クラスを使用する必要があるかどうか、または HKCU\Software\Microsoft\Office[Version].0\Excel\Options の下にある OPEN[n] キーの検索を処理する別の方法があるかどうかも知りたいです。プロジェクト出力を使用してインストーラー クラスを有効にする場合は、2 つの個別のターゲット ディレクトリが必要です (基本的なプロジェクト出力用に Program Files の下に 1 つ、パックされた XLL 用に %appdata%\Microsoft\AddIns の下に 1 つ)。
どんな助けでも大歓迎です。
ありがとう、
リー