2017-08-25 141 views
0

我的应用程序有一个版本控制文件和许多未版本控制的文件。我想要的行为描述here,我希望这是默认的行为,但我没有看到这种行为。Wix主要升级删除未版本控制的文件

基本上,未版本控制的文件应该在未修改的情况下进行替换,并且如果进行了修改则应单独保留。

从日志看来,安装阶段正在做我所期望的。我的未受版本控制的文件都没有被修改。对于每个文件,我收到一条消息,指出Overwrite; Won't patch(如果散列不同)或Won't overwrite; won't patch(如果散列相同)。

但是,当删除阶段运行时(它在缺省位置运行,在安装完成后运行)将删除所有未版本控制的文件。

我唯一的猜测是为什么它可能是因为每个软件包中的文件都有不同的GUID,但我认为每次创建安装程序时都可以重新生成文件GUID。

我知道我可以改变删除阶段发生在安装之前发生,但我想继续留在地方,如果升级失败,所以我希望避免这种行为的应用程序。

有什么我可以做的,以防止卸载阶段删除我的文件?

+0

虽然还没有完成,我试图总结出一些共同开发使用MSI时,坑瀑布文件进入:[**我如何避免我的WiX/MSI部署解决方案,共同设计缺陷**?(HTTPS:/ /stackoverflow.com/questions/45840086/how-do-i-avoid-common-design-flaws-in-my-wix-msi-deployment-solution)。 –

回答

1

在稍微有点磕磕绊绊之后想通了。原来存在于heat.exe提供-gg标志之间的差,这将产生一个GUID当热运行(随机GUID)和传递-ag标志heat.exe将所述GUID设置为*时可以得到产生heat运行,从而所述GUID (一致)时candle运行。

如果我通过-agheat.exe然后我得到一致的GUID并正确升级行为。

+0

是的,如果您想阻止升级问题,组件GUID必须匹配您的新设置和旧设置。 –

相关问题