Установщик силы для обновления файла в GAC независимо от номера версии

если Ваш exe, оказывается, консольное приложение, Вы могли бы интересоваться чтением stdout и stderr - для которого, я кротко отошлю Вас к этому примеру:

http://support.microsoft.com/default.aspx?scid=kb;EN-US;q190351

Это - что-то вроде полного рта кода, но я использовал изменения этого кода, чтобы метать икру и читать.

7
задан Mike 25 November 2009 в 15:54
поделиться

3 ответа

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

tlbimp /asmversion:1.2.3 /out:Interop.FOOBARLib.DLL foobar.dll 
1
ответ дан 6 December 2019 в 23:07
поделиться

Вы можете попробовать выполнить специальное действие для удаления файла прямо перед установкой компонентов. не рекомендуется использовать vbscript для настраиваемых действий , но приведенный ниже пример все же должен иллюстрировать идею.

<CustomAction Id="ForceRemove" Script="vbscript" Execute="deferred">
  <![CDATA[
  Dim fso
  Set fso = CreateObject("Scripting.FileSystemObject")
  fso.DeleteFile("c:\somefile.dll")
  ]]>
</CustomAction>

<InstallExecuteSequence>
   <Custom Action='ForceRemove' Before='InstallFiles'/>
</InstallExecuteSequence>
-1
ответ дан 6 December 2019 в 23:07
поделиться

То, что вы пытаетесь сделать, называется обновлением сборки на месте в GAC. Для правильной работы обе библиотеки Interop.FOOBARLib.dll должны иметь одинаковую версию сборки, но более новая dll должна иметь более высокую версию файла. Атрибут версии файла должен быть включен в новую таблицу MSI MsiAssemblyName. Wix не включает этот атрибут по умолчанию, поэтому вам необходимо добавить следующий параметр в ваш файл .wixproj:

<SetMsiAssemblyNameFileVersion>True</SetMsiAssemblyNameFileVersion>

См. Также:

Обновление на месте с помощью Wix

11
ответ дан 6 December 2019 в 23:07
поделиться
Другие вопросы по тегам:

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