2016-06-15 2 views
1

В развертывании моего приложения мы проверяем, какая версия клиента excel установлена ​​на компьютере.В Wix, как получить подстроку значения ключа реестра в свойстве?

Несколько раз, если установлено несколько версий, мы пытаемся получить последнюю версию excel, а затем установить нашу надстройку.

Нам нужно получить номер последней версии Excel для поиска в реестре.

После реестра

"HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ Excel.Application \ CurVer"

, который дает значение для Excel 2016, как

Excel.Application.16

Как получить e число 16 из этого в собственность? Мы должны это получить, потому что нам нужно установить наш Msi, если установлен excel 2010 или выше.

+0

Зачем вам нужна версия Excel для установки? Целевой раздел реестра не зависит от версии. Я имею в виду, HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Office \ Excel \ Addins – Nikolay

+0

Вы когда-нибудь заставляли его работать? Мне нужно то же самое для Word ... @Nikolay Мне нужно включить отключенные элементы во время установки ... и это в конкретном ключе версии реестра. – aurel

ответ

1

Вместо чтения реестра, а затем играть со строковым значением, вы можете сделать поиск компонентов для компонента ID первенствовать, которая является более надежной техникой:

Пожалуйста, найдите ниже компоненты ID для других версий Excel.

  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 64: {C4ACE6DB-AA99-401F-8BE6-8784BD09F003}

Надежда, что помогает!

EDIT: Вы можете сделать что-то вроде этого:

<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 или выше не установлено.

+0

, но эта проверка будет похожа на жесткую кодировку для конкретной версии. Мы требуем, чтобы была установлена ​​любая версия excel на или выше 2010 года. – Samselvaprabu

+0

Обновлен ответ, проверьте его. – Isaiah4110

+0

Сэм - пожалуйста, отметьте его как ответ, если это ответит на ваш вопрос. – Isaiah4110

Смежные вопросы