在Wix中,如何获取属性中的注册表键值的子字符串?

时间:2016-06-15 10:11:05

标签: c# excel wix registry

在我的应用程序部署中,我们正在验证计算机中安装了哪个版本的excel客户端。

有时如果安装了多个版本,我们会尝试获取最新版本的Excel,然后安装我们的插件。

我们需要获取最新版本的Excel才能在注册表中进行搜索。

关注注册表

  

“HKEY_LOCAL_MACHINE \ SOFTWARE \类\ Excel.Application \ CURVER”

为Excel 2016提供了

的价值
  

Excel.Application.16

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

1 个答案:

答案 0 :(得分:1)

不是读取注册表然后使用字符串值,而是可以对excel组件ID进行组件搜索,这是一种更强大的技术:

请在下面找到其他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}
  8. 希望有所帮助!

    编辑:您可以这样做:

        <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或更高版本。