WiXを実行してからしばらく時間がかかりましたが、ちょっと前に書いた既存のブートストラップexe実際に私が思っていたことをやっているのではないですか?私は似たような問題を抱えている他の人たちを見てきましたが、なぜそれが機能していないのかまだ分かりません。私は基本的にSQL SMOの特定のバージョンがインストールされているかどうかを判断しようとしていると、この場所でレジストリで探していますWIx - SQL SMOの値が存在するかどうかを調べるときに「レジストリキーが見つかりません」
:マイクロソフト\のMicrosoft SQL Serverの\
HKEY_LOCAL_MACHINE \ソフトウェア\ SharedManagementObjects \ CurrentVersionの:そこに「バージョン」と呼ばれるREG_SZキーがあり、それが13.0.1601.5以下
私のコードのモックアップであるようなものに設定されています
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="RegReadTesterSetup" Version="1.0.0.0" Manufacturer="BigChris Inc" UpgradeCode="fcaa47db-3b55-474f-995d-2b0a0905fced">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<util:RegistrySearch Id="IsSMOInstalled"
Root="HKLM"
Key="SOFTWARE\Microsoft\Microsoft SQL Server\SharedManagementObjects\CurrentVersion\Version"
Value="13.0.1601.5"
Win64="yes"
Result="exists"
Format="raw"
Variable="SMOInstalled"/>
<Chain>
<MsiPackage SourceFile="C:\Users\chris.moxon\AppData\Local\Temporary Projects\SimpleTextFileSetup\bin\Debug\SimpleTextFileSetup.msi"
Id="MYTEXT"
DisplayName="Big Chris Test File"
Visible="yes"
InstallCondition="SMOInstalled = 0"
SuppressSignatureVerification="yes"/>
</Chain>
</Bundle>
</Wix>
注:インデント設定(Win64の&フォーマット)はちょうどそれが動作するように取得するためのストローの試みで私のクラッチの一部です。これらの設定の有無にかかわらず、 64ビットまたは32ビットマシンで実行すると、私はいつも(このキーが存在するマシン上で)取得します:
レジストリキーが見つかりません。私のログファイルに0
を値にキー= 'マイクロソフト\ Microsoft SQL Serverの\ SOFTWARE \ SharedManagementObjects \ CurrentVersionのバージョン\'
数値変数を設定する 'SMOInstalled'; SMOInstalled変数は常に0に設定されるため、SMO(またはテキストファイル)は常にインストールされます。
私は何かばかげたことをしなければならないことを感謝します(または希望)。
ありがとうございます。
ビッグクリス。
ブライアン! –