WiX重大升级!需要针对不同组件的不同行为

时间:2010-06-01 16:05:31

标签: wix major-upgrade

好!我终于更密切地确定了我遇到的问题。在我的安装程序中,我试图在重大升级时获取REMAIN INTACT的设置文件。我终于得到了这个建议来设置

<InstallExecuteSequence>
    <RemoveExistingProducts After="InstallFinalize" />
</InstallExecuteSequence>

这可以成功强制此组件保留原始组件,而不是替换它(如果存在):

<Component Id="Settings" Guid="A3513208-4F12-4496-B609-197812B4A953" NeverOverwrite="yes">
    <File Id="settingsXml" KeyPath="yes" ShortName="SETTINGS.XML" Name="Settings.xml" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\Settings\settings.xml" Vital="yes" />           
</Component>

无论其!这是个问题!我在这里列出了另一个组件:

<Component Id="Database" Guid="1D8756EF-FD6C-49BC-8400-299492E8C65D" KeyPath="yes">
    <File Id="pathwaysMdf" Name="Pathways.mdf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.mdf" Vital="yes"/>
<File Id="pathwaysLdf" Name="Pathways_log.ldf" DiskId="1" Source="\\fileserver\Shared\Databases\Pathways\SystemDBs\Pathways.ldf" Vital="yes"/>
</Component>

这个组件必须在重大升级时更换。到目前为止,我只能通过设置

来实现这一目标
<RemoveExistingProducts After="InstallInitialize" />

这突破了设置文件所需的第一个功能。

我该如何做?!

2 个答案:

答案 0 :(得分:1)

问题是不应该首先安装settings.xml,你真正想做的是安装类似'defaultSettings.xml'的东西,并在一个单独的位置安装用户可编辑的设置,复制在安装后配置步骤或首次运行时,默认为用户/系统配置。如果用户修改了文件并运行“修复”,那么无论如何它都会被覆盖,这是Windows Installer的预期行为。

如果您确实希望Windows Installer“单独保留文件”,那么您将需要一个非托管组件,即具有空GUID的组件。比如...

<Component Id="Settings" Guid="" NeverOverwrite="yes">
    <File Id="settingsXml" KeyPath="yes" ShortName="SETTINGS.XML" Name="Settings.xml" DiskId="1" Source="\\fileserver\Release\Pathways\Dependencies\Settings\settings.xml" Vital="yes" />           
</Component>

答案 1 :(得分:0)

除非有人不同意,否则我决定不想做我想做的事。我正在尝试使用两个自定义操作进行丑陋的黑客攻击!

WiX custom action with DTF... quite confused