если Ваш exe, оказывается, консольное приложение, Вы могли бы интересоваться чтением stdout и stderr - для которого, я кротко отошлю Вас к этому примеру:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q190351
Это - что-то вроде полного рта кода, но я использовал изменения этого кода, чтобы метать икру и читать.
Вы можете регенерировать сборку взаимодействия самостоятельно и заставить ее получить более новую версию, например:
tlbimp /asmversion:1.2.3 /out:Interop.FOOBARLib.DLL foobar.dll
Вы можете попробовать выполнить специальное действие для удаления файла прямо перед установкой компонентов. не рекомендуется использовать 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>
То, что вы пытаетесь сделать, называется обновлением сборки на месте в GAC. Для правильной работы обе библиотеки Interop.FOOBARLib.dll должны иметь одинаковую версию сборки, но более новая dll должна иметь более высокую версию файла. Атрибут версии файла должен быть включен в новую таблицу MSI MsiAssemblyName. Wix не включает этот атрибут по умолчанию, поэтому вам необходимо добавить следующий параметр в ваш файл .wixproj:
<SetMsiAssemblyNameFileVersion>True</SetMsiAssemblyNameFileVersion>
См. Также: