0

私が書いたアプリケーションに自動化インターフェースを追加しました。タイプ ライブラリはリソースとしてアプリケーションに格納され、起動時にアプリケーションが呼び出しRegisterTypeLibてタイプ ライブラリを自動的に登録します。

Visual Studio は管理者として実行されており、アプリケーションはこれを継承しているため、この呼び出しRegisterTypeLibは Visual Studio からアプリケーションが起動される開発中にのみ機能することがわかりました。コマンド ラインからデバッグ ビルドを実行する場合、またはインストーラーによってインストールされたアプリケーションを実行する場合、アプリケーションは管理者として実行されず、呼び出しがRegisterTypeLib失敗します。

したがって、インストール時にタイプ ライブラリを登録する必要があると思います (これには、最初にアプリケーションを実行しなくても、自動化インターフェイスを使用できるようにするという良い副作用もあります)。インストーラーは、Visual Studio の Windows インストーラー プロジェクトです。

インストール中に効果を達成することは可能RegisterTypeLibですか (また、可能であればどのように)? インストーラー ソリューションが開いているとき、Visual Studio はレジストリにキーを追加できる "Registry" というエディターを表示しますが、各キーを個別に追加する方法はありません。のようRegisterTypeLibに。

編集:マニュエルのヒントと私自身のいくつかの調査の後、質問はこれに要約されます:インストーラーから呼び出す必要がMyApp /RegServerあります(インストーラーによって作成されていない他の必要なレジストリキーも作成しますRegisterTypeLib); これをどのように正確に行うのですか?Visual Studio インストーラー ソリューションに「インストール」カスタム アクションを追加しましたが、それをトリガーする方法がまだわかりません。

4

1 に答える 1

1

通常の方法は、コマンド ライン引数 /regserver または /unregserver を使用してインストーラーにアプリケーションを起動させることです。フレームワーク (MFC/ATL) を使用する場合、すべての登録 (登録解除) 手順の処理は自動的に行われます。

すべてを自分で行いたい場合は、"main" への引数を確認して、RegisterTypeLib を呼び出します。com サーバーであることがわかっている場合、Windows インストーラーは /regserver を使用して EXE を起動する必要があります。

于 2013-11-03T11:15:20.370 に答える