2010-05-14 64 views
5

我有一个Windows Forms应用程序,我最近在WPF中重写,我需要将它发布给我的最终用户。我希望能够让用户转到WPF应用程序的ClickOnce安装点,并删除其Windows窗体应用程序,因此它们在他们的机器上都没有。从Windows窗体移到WPF的一键式应用程序

完成此操作的最佳方式是什么(阅读:最简单的用户)?

我想过创建一个先决条件的命令行来检测旧版本并卸载,但我想避免写一些只能运行一次的东西。

回答

2

我认为你实际上应该能够部署WPF版本作为新版本的Windows窗体应用程序。

每个应用程序的目标是什么版本的.NET Framework?

两个项目上的程序集名称是否相同,安装URL是否相同? (对于ClickOnce,它与projectGUID无关。)

1

我还没有尝试过,但你可以让你的WPF应用程序直接替换你的WinForms应用程序?如果您发布到相同的文件夹,请将旧项目的正确GUID复制到新项目,它可能只是无缝安装。

这不会删除旧版本,但每次更新ClickOnce应用程序都会保留旧版本。

或者,您是否可以将现有的WinForms项目转换为WPF项目?它只是一组不同的程序集引用?我从来没有写过WPF应用程序,所以请原谅我,如果这显然是错误的。

0

为什么不简单地给新的WPF应用程序相同的<ProjectGuid>,<PublishUrl>等和更高的主要版本号?

ClickOnce甚至不会意识到你从WinForms切换到WPF技术。

正常的ClickOnce版本更新功能会在下次更新应用程序时自动替换旧代码(如果需要,可以将其设置为自动发生)。

+0

我试过了,WinForm应用程序没有提供更新对话框。当我启动WPF应用程序时,它与WinForm应用程序一起安装。你知道哪些部分需要从项目复制到项目以确保它具有相同的身份? – Tyler 2010-05-14 18:51:37

+0

我的记忆很模糊,所以我尝试了一些实验来确认。看来如果新项目具有相同的程序集名称并且使用相同的公钥签名,它将具有相同的ClickOnce标识。您确定您使用相同的证书来签署两个项目,并且两个项目的名称完全相同吗?如果这已经过验证,我会尝试复制AssemblyInfo.cs中以'和''。希望其中的一个可以做到这一点。 – 2010-05-16 04:20:48

相关问题