我需要创建一个安装文件,检查注册表中是否有其他软件的版本.目前我正在评论和取消评论单独的安装代码行.如何将以下内容变为有条件的?
<!--<Property Id="ACADREG" Value="ACAD-A001:409" /> Autocad 2012--> 
<Property Id="ACADREG" Value="ACAD-A004:409" /> <!--Autocad Arch 2012--> 
我还需要获取安装后期版本.
    <Property Id="ACADROAMDIR">
    <RegistrySearch Id="ROAMROOTDIR" Root="HKCU" Type="raw" Key="Software\Autodesk\AutoCAD\[ACADVER]\[ACADREG]" Name="RoamableRootFolder" />
    </Property>
    <Property Id="ACADDIR">
    <RegistrySearch Id="AcadLocRegistry" Type="raw" Root="HKLM" Key="SOFTWARE\Autodesk\AutoCAD\[ACADVER]\[ACADREG]" Name="AcadLocation" />
    </Property>
wiX有没有办法通过阅读注册表设置[ACADREG]而不是像我上面那样设置它?
您可以使用预处理器条件:
<?define AutocadSku = "ACAD2012" ?>
<?if $(var.AutocadSku) = "ACAD2012" ?>
  <Property Id="ACADREG" Value="ACAD-A001:409" />
<?else?>
  <Property Id="ACADREG" Value="ACAD-A004:409" />
<?endif ?>
或者更好的是,最佳实践是搜索两者,因此稍后您可以有条件地检查每个属性的存在或内容:
<Property Id="ACADROAMROOTDIR">
  <RegistrySearch Id="ROAMROOTDIR" Root="HKCU" Type="raw" Key="Software\Autodesk\AutoCAD\R18.2\ACAD-A001:409" Name="RoamableRootFolder" />
</Property>
<Property Id="ACADROAMARCHROOTDIR">
  <RegistrySearch Id="ARCHROAMROOTDIR" Root="HKCU" Type="raw" Key="Software\Autodesk\AutoCAD\R18.2\ACAD-A004:409" Name="RoamableRootFolder" />
</Property>