Условно включить и переименовать файл в wix

У меня есть установщик, который включает стороннюю библиотеку с 32- и 64-битной версией. Библиотека поставляется с 32-битной и 64-битной папкой с одинаковым именем файла. Что я сделал, так это переименовал файлы, чтобы они имели разные имена 32/64, чтобы оба они могли быть включены в программу установки. Я пытаюсь установить в теге FILE условное включение файла, а также переименовать его обратно в его основное имя efxzlib.dll.

Возможно ли это с файлом? Атрибут Name в File, похоже, переименовывает файл во время сборки, а не во время установки. Я стараюсь избегать отдельных 32- и 64-битных установщиков, поскольку эта DLL является единственным уникальным компонентом 32/64. Лучше всего это достигается с помощью управляемого пользовательского действия?

  <Component Id="CMP_EFX_ZLIB_32BIt" Guid="MY_GUID1">
    <Condition>
      <![CDATA[NOT(VersionNT64)]]>
    </Condition>
    <File Id="FILE_EFX_ZLIB_32BIt" KeyPath="yes" Source="$(var.EFX5LibraryBase32bit)\efxzlib32.dll" Name="efxzlib.dll" />
  </Component>
  <Component Id="CMP_EFX_ZLIB_64BIt" Guid="{MY_GUID2}">
    <Condition>
      <![CDATA[VersionNT64]]>
    </Condition>
    <File Id="FILE_EFX_ZLIB_64BIt" KeyPath="yes" Source="$(var.EFX5LibraryBase64bit)\efxzlib64.dll" Name="efxzlib.dll" />
  </Component>

person Stealth Rabbi    schedule 20.05.2013    source источник
comment
Ваш образец выглядит нормально. Что с ним не работает?   -  person Yan Sklyarenko    schedule 20.05.2013
comment
Wix создает установочный пакет с обоими этими файлами. поскольку они имеют одинаковое имя, оно перезаписывает одно из них. Я хочу, чтобы оба файла существовали в установщике как 32/64.dll, и устанавливал только один из двух, переименовывая файл.   -  person Stealth Rabbi    schedule 20.05.2013


Ответы (1)


Это немного необычная ситуация для типичного установщика Windows, поэтому я сомневаюсь, что это можно сделать средствами WiX. Чтобы сделать это правильно, должно быть два установщика: один для 32-битной системы, а другой для 64-битной системы. Поэтому, если вы настаиваете на своем дизайне установки, вы получите один 32-битный установщик, который можно установить в обеих системах; наоборот не годится. Поэтому в таком случае я бы рекомендовал переименовать файл в пользовательском действии после установки. Помните, что для этого вам необходимо получить права администратора. А также нужно будет решить проблему с обновлениями и с удалением и с переустановкой.

В случае обновлений и повторной установки, если это применимо в вашем случае, вам снова потребуется дополнительное действие после установки.

В случае удаления вам потребуется либо шаг перед установкой, который переименует файл обратно в его источник, либо это пользовательское действие может удалить файл, либо вы можете принудительно удалить папку в XML. В противном случае файл останется на диске, даже если приложение будет удалено.

Это достаточно сложная задача, но долговечная. Или, пожалуйста, пересмотрите вариант с двумя установщиками.

person Tomas S    schedule 05.03.2014