【问题标题】:Replace with different project with ClickOnce update?用 ClickOnce 更新替换不同的项目?
【发布时间】:2012-03-19 20:11:03
【问题描述】:

我们有一个使用 ClickOnce 部署的旧 WinForm 项目。

我刚刚创建了一个新的 WPF 项目,并计划使用 ClickOnce 进行部署,并从所有计算机中删除旧的 WinForm 应用程序。

有没有办法让所有机器运行旧的 WinForm 应用程序 => 检查更新 => 安装新的 WPF 应用程序?

【问题讨论】:

    标签: .net visual-studio-2008 deployment installation clickonce


    【解决方案1】:

    有办法在实现中为此类行为编写代码,但没有自动、简单的方法来做到这一点。

    这有点烦人,因为任何时候您需要更新先决条件或使用新的安全证书重新发布您的应用程序,用户都需要重新安装您的应用程序。

    然而,为了解决这个问题,我创建了一个非常简单的 API,您可以使用它来帮助自动化这个过程。

    查看here

    【讨论】:

    • 哦不...您的项目在 .NET 4.0 中...。我在想是否可以修改旧的 WinForm ClickOnce 配置文件并指向新的配置文件,看看它是否有效。否则我可能会修改 WinForm 应用程序,它将为我的新 WPF 应用程序执行安装,而我的 WPF 应用程序将卸载旧的 WinForm 应用程序(不知何故......?)
    • 我认为您可以从项目设置中降级 API。我不相信我正在使用任何特定于 4.0 的属性。
    • 现在我又在看项目了,是的,它是用 VS 2010 编写的,但是该项目是针对 .Net 2.0 框架的。我想,这应该适用于你的情况。
    • 哦,我在调试你的代码,我发现错误发生在HttpWebResponse rsHead = (HttpWebResponse)rqHead.GetResponse(); 不知道为什么,我想我可能会修改你的代码以在网络驱动器中工作......也许对我来说更好...
    • 所以GetResponse失败的原因是因为IIS不允许访问reinstall文件,需要txt文件(对我来说)。我在您的源代码中发现了一个错误:在您的GetUninstallString 方法中,您执行了appKey.Close(); 以关闭RegisteryKey 并尝试在If 语句中访问(string)appKey.GetValue("DisplayName");。继续抛出异常,结果只会返回Fail uninstall。但无论如何,非常感谢!现在我可以为所有机器卸载和安装! +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 2016-06-10
    • 2020-06-11
    • 1970-01-01
    • 2018-12-08
    相关资源
    最近更新 更多