1

私が取り組んでいる大規模なプロジェクトの MSI インストールをいじっていて、私が見ているこのプロパティについてもっと知りたいと思っています。

それらは [TARGETDIR] のようなものか、「[PROPERTNAMEHERE]」でラップされたものです。これらのリストがどこかにあるかどうかを調べようとしていますか?

ちなみに、カスタム アクションからこれらすべてのプロパティにアクセスする方法はありますか。Context.Parameters コレクションを調べましたが、そこには何も表示されません。/name="[TARGETDIR]\" を CustomActionData として customaction に渡していますが、これでは十分ではありません。

ありがとう

スティーブ

4

3 に答える 3

1

MSI ベースのパッケージを使用する場合、プロパティを理解することが非常に重要です。まず、プロパティにはパブリック プロパティプライベート プロパティの 2 種類があることを知っておく必要があります。カスタム アクションを使用する場合は、インストール プロセスが InstallUI シーケンスから InstallExecute シーケンスに渡されるときに値がリセットされないように、常にパブリック プロパティを使用する必要があります。

また、非常に重要なことですが、カスタム アクションは、遅延実行時にプロパティを取得/設定できません。プロパティ値を取得/設定できるのは、即時の、つまり遅延のないカスタム アクションのみです。

例外が 1 つあります。延期されたカスタム アクションを実行する場合、「CustomActionData」と呼ばれる特別なプロパティから値を取得できます。

カスタム アクションに関しては、C++、C#、または VBScript カスタム アクションを記述して、インストール中にプロパティを取得/設定できます。

VBScriptは、公式のアプリケーション リリースには推奨されませんが、社内で使用する必要がある簡単な作業に使用できます。

C++ カスタム アクションの場合、DLL を取得します。このDLL から 1 つまたは複数のメソッドをエクスポートして、カスタム アクションがトリガーされたときに呼び出すことができます。関数のシグネチャは標準の DLL とは異なることに注意してください。リンクされている例を注意深く分析してください。

より便利な場合は、C# コードを記述した同様の DLL を入手することもできます。

標準 DLL をカスタム アクションとして実行しようとしていないことを確認することは非常に重要です。一部の商用または無料のセットアップ オーサリング ツールでもサポートされていますが、すべてではありません。DLL カスタム アクションを作成する場合は、上記の 2 つのサンプル (C++/C#) のいずれかを使用して最初から作成することをお勧めします。

于 2013-02-20T12:24:23.073 に答える
0

WIXを使用している場合...

最初にサイドノートに答えるには-カスタムアクション内からカスタム値にアクセスできます(カスタムアクションの設定方法を知っていると思います...)-セッションオブジェクト(カスタムアクションのパラメーター)を見てください-これインデクサーを持つCustomActionDataがあります。取得するプロパティの名前を指定して、

session.CustomActionData["INSTALLLOCATION"]

ただし、アクセスする前に、カスタムアクションにプロパティを追加する必要があります。これを行うには、wixにこれを設定するように指示する必要があります...

<CustomAction Id="UNIQUEID" Return="check" Property="YourCustomActionNameInWix" Value="INSTALLLOCATION=[INSTALLLOCATION]" />

あなたの他の質問に答えるために-いいえ、私はいつもそれらをスクリプト化する必要があったコードでこれらの値を取得できるとは思いません。

HTH

于 2013-02-19T14:59:12.677 に答える
0

これを投稿してから数秒後に、プロパティリストに関して探しているものが見つかりました:http: //msdn.microsoft.com/en-us/library/windows/desktop/aa370905 (v = vs.85).aspx

今、私はコードからこれらにアクセスする方法を求めていますか?

于 2013-02-19T14:19:14.490 に答える