質問

私は msのSQL共有管理オブジェクトをインストールするPRQを持っています。このレジストリキーが存在しない場合はPRQをインストールする条件があります。

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{08ECC740-2B3E-45D7-860C-59B511386286}
.

これは、ユーザーが異なる製品コードを搭載したSMOがインストールされるまで機能します。これは、SQL2008をインストールしたときに開発チームに起こります。 PRQが起動したインストーラ

私はより良い状態が必要です。私がやりたいことは次のとおりです。 if(バージョン<= w.x.y.z ||バージョンが見つかりませんでした) それからPRQ

をインストールしてください InstallShield前提条件

前提条件を実行するには、以下の条件を満たす必要があります。 ここでは、前提条件が意志であるファイルとレジストリキーを定義できます。 実行する必要があるかどうかを確認してください。いない場合 条件、前提条件は常に実行されます。

これは私の調査結果に同意します - 条件は一緒になっています。 XMLの条件への未公開のソースはありますか? レジストリ内のバージョンがインストールされている場合はPRQを実行しようとするのを探しているからです。

<conditions>
    <condition Type="32" Comparison="2" 
       Path="HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\SharedManagementObjects\CurrentVersion" 
       FileName="Version" ReturnValue="10.1.2531.0">
    </condition>
</conditions>
.

type="32"は「レジストリエントリには指定されたバージョン値があります」です。 比較="2"は 'ターゲットシステム上のデータが指定されたデータよりも小さいです'

サイドの質問:種類と比較が列挙されている場所はありますか?

この比較タイプは、ターゲットシステム上のデータとの比較は、指定されたデータよりも小さい、または存在しない、または 'ではありません。現在、鍵が下のバージョンで機能している場合は、キーが存在しない場合(すなわち、SMOがインストールされていない場合)PRQはインストールされていません。

この作品を作る方法はありますか? 「特定のバージョンの存在を持つファイル」の条件には、ファイルのバージョンが上記のバージョン(またはターゲットシステムにファイルが見つからない)オプションが指定されている場合はaです。しかし、SMOによってインストールされたファイルを確認するのには機能しません - ユーザーはC以外のいくつかのドライブにインストールした可能性があります。

私は何かが足りないことを願っています。あなたならどうしますか?

役に立ちましたか?

解決

私が通常することは、依存関係を検出するためにARPエントリのような抽象的なことを使用しません。私は依存関係自体に行きます。あなたがDLLを必要とするならば、DLLをインストールするべき何かを検出することを心配するのではなく、DLLがそこにあるかどうかを見てください。

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