gpt4 book ai didi

卸载前的Wix CopyFile和卸载后的恢复

转载 作者:行者123 更新时间:2023-12-02 11:53:26 27 4
gpt4 key购买 nike

我正在执行主要升级并在安装新版本之前卸载现有产品。但我想保留现有的配置文件。

由于早期版本没有 Permanent="yes",因此它会在卸载时删除配置文件。

我怎样才能做这样的事情,在卸载之前将“app.config”复制为“app.config.bak”。卸载后将其从“app.config.bak”恢复为“app.config”。

<DirectoryRef Id="INSTALLDIR">
<Component Id="BackupConfigComponent" Guid="87368AF7-4BA2-4302-891A-B163ADDB7E9C">
<CopyFile Id="BackupConfigFile" SourceDirectory="INSTALLFOLDER" SourceName="app.config" DestinationDirectory="INSTALLFOLDER" DestinationName="app.config.bak" />
</Component>
</DirectoryRef>

<DirectoryRef Id="INSTALLDIR">
<Component Id="RestoreConfigComponent" Guid="87368AF7-4BA2-4302-891A-B163ADDB7E9C">
<CopyFile Id="RestoreConfigFile" SourceDirectory="INSTALLFOLDER" SourceName="app.config.bak" DestinationDirectory="INSTALLFOLDER" DestinationName="app.config" />
</Component>
</DirectoryRef>


<InstallExecuteSequence>
<Custom Action="BackupConfigFile" After="InstallInitialize" />
<RemoveExistingProducts After="InstallInitialize" />
<Custom Action="RestoreConfigFile" After="InstallInitialize" />
</InstallExecuteSequence>

谢谢

最佳答案

您所要做的就是更改 <Custom Action="RestoreConfigFile" After="InstallInitialize" /><Custom Action="RestoreConfigFile" After="RemoveExistingProducts " />

这只是您遇到的时间问题。您告诉所有三个操作在 InstallInitialize 之后发生,因此它们很可能不会按照写入的顺序保留。明确列出您想要的顺序始终是一个更好的主意。更好、完整的修复方法是:

<Custom Action="BackupConfigFile" After="InstallInitialize" />
<RemoveExistingProducts After="BackupConfigFile" />
<Custom Action="RestoreConfigFile" After="RemoveExistingProducts " />

编辑:(基于评论)要在 MSI 中创建自定义操作,您需要创建一个 CustomAction 元素。还需要用于创建自定义操作的后台代码。但是,如果您只是尝试复制文件,我建议使用 CopyFile元素。这比完成所有自定义操作步骤来完成我认为您要做的事情要容易和干净得多。

关于卸载前的Wix CopyFile和卸载后的恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17224035/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com