Установите файл независимо от номера версии с WiX

Версия 1.0 MyApp содержала файл foo.dll. Версия этого файла была версией 10.5.567. Теперь MyApp является версией 2.0, и версия foo.dll 2.0.123. Версия НИЖЕ, чем старая версия. Поставщик, который записал этот dll, решил пойти назад с номером версии файла. Это не решение, которое я могу изменить.

Как я заставляю WiX всегда устанавливать этот файл?

Действие RemoveExistingProducts планируется после действия InstallFinalize и также не может быть изменено.

InstallShield имел 'всегда перезапись' флаг, но я не думаю, что могу подражать этому, не изменяя поведение всех файлов через переключатель компилятора. Я не хочу это. Я просто хочу обновить ЭТОТ файл.

Я также попробовал

<RemoveFile Id="foo.dll" On="install" Name="foo.dll" />

Но это не работало также. Я заканчиваю тем, что получил 'Ошибку 2753 файл, foo.dll не отмечен для установки' позже.

11
задан Mike 16 December 2009 в 21:30
поделиться

1 ответ

Это непросто, потому что это противоречит стандартному поведению пакетов MSI. При компиляции вы должны установить supress-file-options с помощью -sf в light.exe. Тогда из ваших файлов не будет никакой информации о файлах. Вы можете установить DefaultVersion, эта версия будет использоваться. Я также использовал RemoveFile в решении, но могу сказать, что это работает. Я добавил его в тот же компонент, в который я добавляю файл.

   <Component>
        <File DiskId="1" Id="fooDLL" Name="foo.dll" Vital="yes" 
         DefaultVersion="$(var.MAJORVERSION).$(var.MINORVERSION).$(var.BUILDVERSION)" 
         DefaultLanguage="0"></File>
        <RemoveFile Id='RemoveOldDLL' On='install' Name='foo.dll'/>
   </Componente>

Это не чистый способ, но для удаления старой версии он мне подходит.

5
ответ дан 3 December 2019 в 11:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: