【问题标题】:ClickOnce deployment creates new installation directory?ClickOnce 部署创建新的安装目录?
【发布时间】:2017-11-20 14:18:05
【问题描述】:

我正在为我拥有的 Windows 应用程序使用 ClickOnce 部署。但是,当我上传新版本时,它会创建一个新的安装路径,并且不会重复使用第一次安装的初始路径?

我依赖于位于第一个路径中的文件夹中的自动附加数据库,因此当更新查找文件时它没有找到它,因为它正在新安装路径中的文件夹中查找?

知道如何强制 ClickOnce 覆盖初始安装吗?我认为这是默认的 ClickOnce 行为,我想我错了。

/鲍勃

【问题讨论】:

    标签: .net winforms clickonce


    【解决方案1】:

    当您将数据库文件添加到您的项目时,默认的Build Action 将为Content,而在Publish 页面的Application Files 设置中,发布状态将为Data File (Auto)

    虽然您不更改项目的数据库文件,但当您发布项目并安装新版本时,将使用之前版本的数据库文件。但是,如果您更改项目的数据库文件,例如添加一些表或一些测试数据,您使用更改的数据库文件创建的新安装将覆盖以前版本的数据库。

    如果项目中的数据库文件有一些变化,当你发布和安装应用程序时,之前版本的数据库仍然可以访问,并复制到你应用程序的data文件夹中名为.pre的文件夹中.

    您可以使用以下命令找到安装的数据文件夹:

    System.Deployment.Application.ApplicationDeployment.CurrentDeployment.DataDirectory
    

    数据目录下.pre文件夹下有旧版数据库mdf和ldf文件,你可以根据需要使用。

    【讨论】:

    • 只是为了测试,在应用程序启动时,我检查了旧文件是否存在,然后我将旧的 mdf 和 ldf 文件从 .pre 文件夹复制到主数据目录并在新的 mdf 上覆盖它们和ldf文件。然后删除旧的 mdf 和 ldf 文件。这样,无论更改项目数据库文件,我都可以在安装之间保留数据库。但是,我建议您遵循我在答案的前两段中描述的设置。我在 cmets 中描述的案例只是为了展示如何使用旧数据文件,例如用于数据迁移。
    • 如果您对答案有任何疑问或觉得它有用,请告诉我...
    猜你喜欢
    • 2014-11-25
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多