Elemen ExePackage memiliki properti DetectCondition. Ini berarti Anda dapat menentukan suatu kondisi sehingga, jika kondisi bernilai salah, paket akan diinstal. Anda dapat menggabungkannya dengan elemen util:RegistrySearch yang dapat digunakan untuk mencari melalui registri untuk mendeteksi apakah .NET Core telah diinstal.
Untuk melakukan pencarian registri, pertama-tama Anda harus menemukan kunci registri yang ada setiap kali .NET diinstal.
Temukan kunci "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\", (atau "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\" pada mesin 64-bit) di registri Anda, lalu temukan subkuncinya yang sesuai dengan .NET Core - kunci ini harus memiliki nilai untuk "DisplayName" yang seharusnya ".NET Core" atau yang serupa.
Kunci yang benar, setelah ditemukan, harus memiliki nama yang merupakan rangkaian karakter hex - ini adalah salah satu GUID yang sesuai dengan program .NET Core. Anda kemudian dapat menggunakan kode berikut untuk memungkinkan penginstal mencari keberadaan kunci ini:
<util:RegistrySearch Id="VCRedistTest32" Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{YOUR_GUID_HERE}" Result="exists" Variable="DOTNETPresent" Win64="no"/>
(Gunakan Win64="yes" sebagai gantinya untuk registri 64-bit)
Anda kemudian dapat menggunakan yang berikut ini untuk ExePackage:
<ExePackage InstallCommand="/q" Id = "DotNetCore.Setup" SourceFile="..\DotNetCore\DotNetCore.exe" DetectCondition="DOTNETPresent"/>
Jangan lupa untuk menambahkan referensi ekstensi util ke elemen wix tingkat atas:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
person
Calum MacLeod
schedule
24.07.2017