C# アドインをレジストリ フリーに変換する

  1. [アプリケーション プロパティ]ダイアログ ボックスの[ビルド]タブ内の[出力]で、[COM 相互運用機能の登録]のチェック ボックスをオフにします。
  2. プロジェクト ファイルと同じフォルダにファイルを作成し、"CSharpOEMAddIn.X.manifest" と名前を付けます。CSharpOEMAddIn 部分はアドインの名前にします。マニフェスト ファイルに次の行を追加します。実際のアドインに合わせて斜体のテキストを編集します。
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <assemblyIdentity name="InvAddIn" version="1.0.0.0" />
      <clrClass clsid="{2bf59d73-5170-4524-b0e1-391760aaffa5}" 
                progid="CSharpOEMAddIn.StandardAddInServer" 
                threadingModel="Both" 
                name="CSharpOEMAddIn.StandardAddInServer" 
                runtimeVersion="" />
      <file name="InvAddIn.dll" hashalg="SHA1" />
    </assembly>
    

    下図の強調表示部分のように、[アセンブリ名]で、assemblyIdentity 要素の属性がアセンブリの名前になります。

    clrClass 要素の "name" 属性は、2 つのパーツで構成され、ピリオドで区切られています。1 番目は、COM クラスが定義されるネームスペースの名前です。この例では、CSharpOEMAddIn です。2 番目のパーツは、ApplicationAddInServer インタフェースを実装するクラスの名前で、"StandardAddInServer" です。両パーツを下図で強調表示して示します。

  3. このマニフェストを .dll に組み込むために、ポストビルド処理を追加します。ポストビルド処理では、アドインの dll にマニフェストを埋め込む Microsoft ユーティリティである mt.exe を呼び出します。[アプリケーション プロパティ]ダイアログ ボックスの[ビルド イベント]タブで、[ビルド後の編集...]をクリックします
  4. . ビルド後のイベントのコマンド ライン ダイアログ ボックスに、次の文字列を入力します。InvAddin を自分のアドイン名に置き換えます。
    call "%VS90COMNTOOLS%vsvars32"	
    mt.exe -manifest $(ProjectDir)\InvAddin.X.manifest -outputresource:"$(TargetPath)";#2
  5. アドインのクラスから Register メソッドと Unregister メソッドを削除することで、レジストリへのアドイン登録に関連付けられているすべてのコードを削除します。AddInGuid 関数は、登録関数と同じ領域にあります。アドインの他の領域でこのプロパティを使用する場合は、このプロパティは削除しないでください。
  6. プロジェクトをコンパイルします。マニフェストが .dll 内に埋め込まれます。コンパイル時にエラーが発生した場合は、入力したコマンド文字列が手順 4 の文字列と同じであるか確認します。

    マニフェストが完全に埋め込まれていることを確認するには、Visual Studio にアドイン .dll をドラッグします。下図に示すように、"RT_MANIFEST" フォルダが表示されます。"2" のアイコンをダブルクリックして、実際のマニフェスト データを表示します。

  7. すべてのレジストリ フリー アドインには .addin ファイルが必要です。レジストリ ベースのアドインでは、Inventor はアドインに関する情報を取得するのに、レジストリに依存します。.addin ファイルは、これと同じ情報のためのレジストリとして機能します。アドインのファイル名は、Autodesk.AddInName .Inventor.addin の形式です。下図は、例の基本アドインの .addin ファイルの例です。変化する部分は斜体で示しています。
    <?xml version="1.0" encoding="utf-16"?>
    <Addin Type="Standard">
    	<ClassId>{2bf59d73-5170-4524-b0e1-391760aaffa5}</ClassId>
    	<ClientId>{2bf59d73-5170-4524-b0e1-391760aaffa5}</ClientId>
    	<DisplayName>MyOEMApp</DisplayName>
    	<Description>Inventor OEM Sample App</Description>
    	<Assembly>MyOEMApp\MyOEMApp.dll</Assembly>
    	<Hidden>0</Hidden>
    </Addin>
    

      アドイン ファイル例の要素について説明します。

    • ClassIdClientId: 両方とも同じ値で、StandardAddInServer クラスの最上位にある GUID です。
    • DisplayName: 任意の値を設定でき、アドイン マネージャに表示されるアドインの名前です。
    • Description: 任意の値を設定でき、アドイン マネージャに表示されるアドインの説明です。
    • Assembly: アドイン .dll の名前とパス(OEM bin フォルダに対する相対パス)です。サブフォルダの名前は、アドイン .dll と同じにする必要があります。
    • Hidden: アドイン マネージャでアドインを表示するかどうかを定義します。1 の値は、非表示にすることを示します。ただし、アドイン マネージャ内で右クリックして、[非表示のメンバを表示]を選択すると、すべてのアドインが表示されます。
    • 他のアドインで定義されている他の要素が含まれることがありますが、適用されないか、OEM 基本アドインでは無視されます。

  8. OEM¥bin フォルダにアドイン .dll と同じ名前のフォルダを作成します(名前から .dll 部分は省きます。新しいフォルダの絶対パスの例: "C:¥Program Files¥Autodesk¥Inventor OEM 2014¥Bin¥MyOEMApp")。

    新しいフォルダにアドイン .dll をコピーします。

  9. アドインの対象範囲とオペレーティング システムに応じて、次のフォルダのいずれかに、.addin ファイルをコピーします。
    • バージョンに依存しない場合
      .addin ファイルを次の場所に配置すると、マニフェスト ファイルの "SupportedSoftwareVersionXXX" 設定の値に基づいて、アドインは複数のバージョンの Inventor にロードされます。
      • Windows XP C:¥Documents and Settings¥All Users¥Application Data¥Autodesk¥Inventor Addins¥
      • Windows7 C:¥ProgramData¥Autodesk¥Inventor Addins¥
    • バージョンに依存する場合
      マニフェスト ファイルを次の場所に配置すると、特定のバージョンの Inventor にアドインをロードすることを示します。マニフェスト ファイルの "SupportedSoftwareVersionXXX" 設定のすべての値は無視されます。
      • Windows XP C:¥Documents and Settings¥All Users¥Application Data¥Autodesk¥Inventor 2011¥Addins¥
      • Windows7 C:¥ProgramData¥Autodesk¥Inventor 2011¥Addins¥
    • ユーザごとにオーバーライドする場合
      ユーザごとにオーバーライドする場合は、マニフェスト ファイルは次の場所に自動的に生成されます。これらのマニフェスト ファイルの設定によって、'すべてのユーザ' フォルダにあるマニフェスト ファイルの設定値がオーバーライドされます。オーバーライド マニフェスト ファイルの名前は、"マスタ" ファイルの名前と同じになります。
      • Windows XP C:¥Documents and Settings¥<ユーザ>¥Application Data¥Autodesk¥Inventor 2011¥Addins¥
      • Windows7/Vista C:¥Users¥<ユーザ>¥AppData¥Roaming¥Autodesk¥Inventor 2011¥Addins¥