質問

当社では、COM オブジェクト自動化モデルを使用して、お客様がアプリケーションを利用できるようにしています。

彼らは、アプリケーションインターフェイスにアクセスするためにほとんどの部分にPythonを使用しています。

アプリケーションの異なるバージョンをインストールできるようにしたいため (まだ実行されていませんが、これは別の問題です)、COM コンポーネントを regfree になるように変更しています。

ただし、レジストリ内のエントリが必要なため、IDispatch オートメーションを介したスクリプト言語からのアクセスと競合します。

私たちのアプローチは、実際のアプリケーションのアクティブなバージョンを管理するアプリケーションを作成することです。ユーザーはどのバージョンを使用するかを決定でき、レジストリ エントリは自動的に処理されます。

私たちのアプローチに代わるものは何でしょうか?

役に立ちましたか?

解決

COM にはこれを行うためのプロトコルがあります。インターフェイスのバージョンを設定する(およびバージョンごとに GUIDS を変更する)場合は、複数のバージョンをインストールできます。MicrosoftはこれをWORDなどで行っています。

ライブラリのバージョン 5 に固有の Word.Document.5 クラスを作成することも、マシン上に存在する最上位のインスタンスを作成する word.Document だけを作成することもできます。この機能が COM に組み込まれているのか、実装する必要があるのか​​はわかりませんが、検討する価値はあります。

他のヒント

Regfree COMオブジェクトには、 Microsoftからアクセスできます。 Windows.ActCtx オブジェクト。

レジストリへのエントリを必要とするIDispatchオートメーションについては、厳密には正しくありません。デフォルトのATL実装であるIDispatchImplを使用していると思います。 nofollow noreferrer">方法の「>コンテキストアクティベーションAPIのアクティブ化」ここに提案されたすべてのエントリポイントをDLLにラップし、アクティベーションコンテキストのアクティベーション/アクティベーション解除を行います。

まあ答えは自分で提案されています。 COMコンポーネントのすべてのバージョンの完全なリストを持つアプリケーションを作成できます。ユーザーがバージョンを選択したら、regsvr32アプリケーションを呼び出してその特定のバージョンを登録できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top