0

インストーラーは、サービスのインストール中にSQLServerの名前をレジストリに書き込んでいます。editそして、ユーザーがサーバー名を入力するコントロールを備えたダイアログウィンドウを作成しました。次に、このコントロールにChangeModeのレジストリからの値を入力します。また、このレジストリキーが空の場合は、デフォルトの名前を入力します。どうすればそれを解決できますか?RegistrySearchノードをノードに入れてみましたControl。しかし、私にはそれが機能していないようです..どんな助けもありがたいです

PSここでいくつかの情報を見ました:link1。そして、次のようなコードを試しました:

<Property Id="SERVCONNSTR" Value=".\SQLEXPRESS">            
        </Property>
<Property Id="CONNSEARCH">
<RegistrySearch Id="servconstr" Root="HKLM"
    Key="Software\$(var.Manufacturer)\SERVICE" Name="SQL Server" Type="raw"></RegistrySearch>
</Property>
<SetProperty Id="SERVCONNSTR" Value="CONNSEARCH"
     After="AppSearch"><![CDATA[CONNSEARCH AND (!FEATURE1=3 OR !FEATURE2=3 OR !FEATURE3=3)]]></SetProperty>

しかし、変更中にedit-controlで。\SQLEXPRESSを取得しています。

私が間違っているのは何ですか?

4

3 に答える 3

2

RegistrySearchをプロパティに入れ、そのプロパティをコントロールに関連付けます。

于 2011-07-01T12:49:33.610 に答える
0
<Property Id="SERVCONNSTR" Value=".\SQLEXPRESS">            
        </Property>
<Property Id="CONNSEARCH">
<RegistrySearch Id="servconstr" Root="HKLM"
    Key="Software\$(var.Manufacturer)\SERVICE" Name="SQL Server" Type="raw"></RegistrySearch>
</Property>
<SetProperty Id="SERVCONNSTR" Value="[CONNSEARCH]"
     After="AppSearch">CONNSEARCH</SetProperty>
于 2011-07-02T12:27:01.730 に答える
0

2つのプロパティを使用している理由がわかりません。registrySearchを使用してプロパティCONNSEARCHを設定すると、レジストリがチェックされ、レジストリが存在する場合は、そこにある値が割り当てられます。これは、編集ボックスがあるほとんどのUIが実行されるかなり前のAppSearchフェーズで発生します。したがって、SetPropertyも使用する必要はありません。

レジストリキーにデフォルト値を入力しますか、それともプロパティにデフォルト値を入力しますか?

プロパティの場合、レジストリ検索を使用しているプロパティ要素のValue属性を入力するだけです。上で述べたように、レジストリに何も見つからない場合は、デフォルトでデフォルトになります。

このようになります。

<

<Property Id="CONNSEARCH" Value="DefaultValue">
<RegistrySearch Id="servconstr" Root="HKLM"
    Key="Software\$(var.Manufacturer)\SERVICE" Name="SQL Server" Type="raw"></RegistrySearch>
</Property>

Appsearchの後、プロパティが設定され、コントロールがそのプロパティに関連付けられている場合は、その値で埋められます。これにより、レジストリに何も存在しない場合、デフォルトのプロパティ値が「DefaultValue」に設定されます。

レジストリ内のキーのデフォルト値を作成するには、このシナリオで常にインストールされるコンポーネントにregistryKey / RegistryValue要素を配置し、他の場所に設定しない場合は、そのキーをデフォルト値に設定するだけだと思います。 。

一番

于 2013-08-02T13:58:18.370 に答える