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" />
这个破解我需要的设置文件的第一个功能。
我该怎么办?
答
问题是不应该首先安装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>
也许我需要的是两个自定义操作,一个可以备份RemoveExistingProducts之前存在,另一个用于恢复文件的文件?任何人都可以告诉我这是什么样子?实际的行动需要一个exe或bat文件?我如何将文件和目录的名称传递给它? – Joshua 2010-06-01 17:56:33