2013-01-02 24 views
3

我有一个微星设置我的应用程序。它有一个单独的组件,只安装到%PROGRAMFILES%(没有共享的二进制文件)。简化的,它看起来像这样我如何确保MSI安装了降级库?

Msi file, Monday build: 
    Program.exe (v1.0.0) 
    ThirdPartyLibrary.dll (v2.0.1) 

现在,如果我发现引起我从V2.0.0到V2.0.1的ThirdPartyLibrary DLL的升级程序中的错误,从而恢复了参考V2.0.0,看来我的MSI不会自动替换安装目录中的文件?

Msi file, Tuesday build: 
    Program.exe (v1.0.0) 
    ThirdPartyLibrary.dll (v2.0) <- downgraded 

这里的最佳做法是确保程序文件夹总是包含我的设置中的二进制文件?我应该a)在复制新文件之前擦除安装目录中的所有内容?有没有一个选项(在WIX中)我可以使用,使得msi强制覆盖所有文件,而不管版本是什么?

如果我从设置中删除文件(这将导致错误出现在运行时文件),然后安装后有一个工作程序的唯一途径,是如果它首先删除了所有的文件?

+0

但从安装点的周二构建应该包含V2.0.2是为V2.0.1修复。因为它是现在,如果你有安装MSI周一没有必要做周二任何事情,你已经拥有的dll的较新版本....我假设你知道的[教程](HTTP://威克斯。 tramontana.co.hu/tutorial/upgrades-and-modularization) – rene

+0

事情是没有V2.0.2,我不能做一个,因为它是在我发现升级产生的问题与第三方库我应用。所以我需要的是MY应用程序的NEWER(Tuseday)版本包含第三方库的OLDER版本(v2.0.0)。我找不到教程中提到的这个,你知道它是否在那里提到?它必须是一个相当普遍的问题? –

+0

我猜我们自己更换工作应:http://wix.tramontana.co.hu/tutorial/upgrades-and-modularization/replacing-ourselves你也可以尝试加入[威克斯用户邮件列表(HTTP:/ /sourceforge.net/mailarchive/forum.php?forum_name=wix-users) – rene

回答

1

您可以使用MSI把戏。在msi数据库的“文件”表中,编辑“版本”列并输入更高的版本,例如3.0。这样您就可以利用文件版本控制规则。