在WIX中,如何获取属性中的registry键值的子string?

在我的应用程序部署中,我们正在validation哪个版本的excel客户端安装在一台机器上。

有些时候,如果安装了多个版本,那么我们正试图获得最新版本的Excel,然后安装我们的加载项。

我们需要获取Excel的最新版本号以便在registry中进行search。

注册后

“HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes下\ Excel.Application \ CURVER”

这是给Excel 2016的价值

Excel.Application.16

如何从这个单独的16号获得财产? 我们必须得到这个,因为如果安装了excel 2010或更高版本,我们必须安装我们的Msi。

而不是阅读registry,然后玩string值,您可以执行组件search的Excel组件ID这是一个更强大的技术:

请在下面find其他Excel版本的组件ID。

  1. Excel 2007组件ID:{0638C49D-BB8B-4CD1-B191-052E8F325736}
  2. Excel 2010 x86:{538F6C89-2AD5-4006-8154-C6670774E980}
  3. Excel 2010 x64:{8B1BF0B4-A1CA-4656-AA46-D11C50BC55A4}
  4. Excel 2013 x86:{C8A65ABE-3270-4FD7-B854-50C8082C8F39}
  5. Excel 2013 x64:{E3BD1151-B9CA-4D45-A77E-51A6E0ED322A}
  6. Excel 2016 x86:{C845E028-E091-442E-8202-21F596C559A0}
  7. Excel 2016 x64:{C4ACE6DB-AA99-401F-8BE6-8784BD09F003}

希望有所帮助!

编辑:你可以做这样的事情:

<Property Id="EXCEL2016Search"> <ComponentSearch Id="DetectExcel1" Guid="{C4ACE6DB-AA99-401F-8BE6-8784BD09F003}" Type="file"/> </Property> <Property Id="EXCEL2013Search"> <ComponentSearch Id="DetectExcel2" Guid="{E3BD1151-B9CA-4D45-A77E-51A6E0ED322A}" Type="file"/> </Property> <Property Id="EXCEL2010Search"> <ComponentSearch Id="DetectExcel3" Guid="{8B1BF0B4-A1CA-4656-AA46-D11C50BC55A4}" Type="file"/> </Property> <Property Id="EXCELVersion" Value="0" /> <SetProperty Id="EXCELVersion" After="DetectExcel3" Value="1" Sequence="first" > <[CDATA[EXCEL2016Search OR EXCEL2013Search OR EXCEL2010Search]]> </SetProperty> 

如果属性“EXCELVersion”的值为1,则安装Excel 2010或更高版本。 如果它是0,那么Excel 2010或以上没有安装。