WiX主要升级!需要不同组件的不同行为

问题描述:

好吧!我终于更仔细地发现了我遇到的问题。在我的安装程序中,我试图在主要升级上获取设置文件以保持完整。我终于得到这个与建议工作,建立WiX主要升级!需要不同组件的不同行为

<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" /> 

这个破解我需要的设置文件的第一个功能。

我该怎么办?

+0

也许我需要的是两个自定义操作,一个可以备份RemoveExistingProducts之前存在,另一个用于恢复文件的文件?任何人都可以告诉我这是什么样子?实际的行动需要一个exe或bat文件?我如何将文件和目录的名称传递给它? – Joshua 2010-06-01 17:56:33

问题是不应该首先安装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> 
+0

除了我不能改变这个!我在开始在这里工作之前正在处理旧版安装程序,这需要使用我编写的新版本进行更新! – Joshua 2010-06-01 22:37:25

+0

我已经决定剩下的唯一选择是两个自定义操作...我正在努力工作! http://*.com/questions/2953366/wix-custom-action-with-dtf-quite-confused – Joshua 2010-06-01 22:39:47

除非有人不同意,我已经决定了我想做的事是不可能的。我正在尝试使用两个自定义操作的丑陋黑客!

WiX custom action with DTF... quite confused