gpt4 book ai didi

c# - Wix:将数据从 ProgramFilesFolder 移动到 ProgramData

转载 作者:太空宇宙 更新时间:2023-11-03 13:51:48 32 4
gpt4 key购买 nike

我们开发C#应用程序并通过Wix将其打包成可以安装的MSI文件。应用程序可执行文件和 .dll 文件安装到 ProgramFilesFolder 中的标准位置。

启动应用程序时创建本地 .sdf 文件(数据库),如果它不存在的话。

当我们卸载(例如,作为升级到新版本的一部分)时,除此 .sdf 文件外,所有内容都会被删除。当我们安装较新版本时,它会选择旧的 .sdf 文件并继续使用它。

现在的问题是 .sdf 文件目前也位于 ProgramFilesFolder 下。我们不想“将旅行行李存放在发动机舱内”,因此我们将此 .sdf 文件移动到 ProgramData

所以我们将在应用程序代码中进行此更改 - 在不同的路径中使用 .sdf 文件。下次升级时,我们需要将现有的 .sdf 文件从 ProgramFilesFolder 移动到 ProgramData

问题 - 移动此文件的理想方法是什么?

1) 在 Wix 设置代码中 - 识别是否从“旧”版本(比我们更改 .sdf 文件位置的版本更旧)升级到"new" "(更新或等于更改的版本),在这种情况下移动文件。这里的好处是 Wix“知道”所有版本号并且可以根据它们有条件地进行移动。

2) 在 C# 应用程序代码中 - 与在 Wix 中编写 CustomAction 相比,它可能更简单。但是应用程序代码对版本一无所知,因此我们不能像 Wix 那样使用“旧”和"new"版本的相同逻辑。所以我们只能使用通用逻辑,例如,如果文件存在于新位置,则使用新位置的文件,否则检查文件是否存在于旧位置,然后将其移动到新位置,如果文件存在于两个位置 - 忽略来自旧位置,只需在新位置使用该文件即可。

能否请您帮助选择最佳方式?

所描述的方法有任何缺点\风险吗?

有更好的解决方案吗?

最佳答案

我会通过 WIX 控制一切,因为您可以设置属性和条件以获得安装过程中所需的行为。

我建议你从这里开始Checking for oldies

您需要在 CA 中进行的更改是根据找到的版本移动或不移动文件。

如果需要更大的改变,请看这里 Replacing Ourselves

HTH

关于c# - Wix:将数据从 ProgramFilesFolder 移动到 ProgramData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13499289/

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