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

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

    clrClass 要素の "name" 属性は、3 つのパーツで構成され、ピリオドで区切られています。1 番目は、次の図で強調表示されているルートのネームスペースの名前です。

    2 番目のパーツは、COM クラスが定義されるネームスペースです。この例では、次の図でハイライト表示されている MyOEMApp です。最後の部分は ApplicationAddInServer インタフェースを実装するクラスの名前です。この例では、次の図でハイライト表示されている StandardAddInServer です。

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

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

  6. すべてのレジストリ フリー アドインには .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 基本アドインでは無視されます。

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

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

  8. .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 2014¥Addins¥
      • Windows7 C:¥ProgramData¥Autodesk¥Inventor 2014¥Addins¥
    • ユーザごとにオーバーライドする場合
      ユーザ単位のオーバーライドを保存する場合は、マニフェスト ファイルは次の場所に自動的に生成されます。これらのマニフェスト ファイルの設定によって、'すべてのユーザ' フォルダにあるマニフェスト ファイルの設定値がオーバーライドされます。オーバーライド マニフェスト ファイルの名前は、"マスタ" ファイルの名前と同じになります。
      • Windows XP C:¥Documents and Settings¥<ユーザ>¥Application Data¥Autodesk¥Inventor 2014¥Addins¥
      • Windows7 C:¥Users¥<ユーザ>¥AppData¥Roaming¥Autodesk¥Inventor 2014¥Addins¥