【问题标题】:WPF deployment strategy dilemma.clickonce(limited customization)+autoupdate vs installer(unlimited costomization) no autoupdateWPF部署策略dilemma.clickonce(有限定制)+自动更新vs安装程序(无限定制)无自动更新
【发布时间】:2010-05-31 13:12:44
【问题描述】:

我一直面临部署问题。我用visual studio 2008 构建了一个WPF application 并创建了一个工作正常的installer(msi)。但是添加automatic 更新是很痛苦的。我在 windowsclient.net 上看到过this article,但它似乎很旧,但对我来说可能是完美的东西。然后我查看了使用enterprise library june 2005 的.Net 应用程序updater block v2.0,由于某种原因它不是安装在我的机器上。

我认为我需要使用更新的企业库所以我installed and compiled Enterprise 4.1(october 2008) 但没有更好的事情发生。我决定尝试CLickonce 部署。经过努力,它几乎是完美的。我意识到当我在我的 XP 机器上测试 clickonce 提供的更新时,我没有注意到需要sqlite dll in the GAC。当然它已经在那里了。当我搬到 vista 时我注意到它有问题。在检查网络后我知道it's impossible to add a dll to the Global Assembly Cache
现在我被卡住了,我想我已经碰壁了。任何人都可以分享他的一些经验吗?如果我能得到帮助,我愿意尝试更新程序块。

感谢阅读!

【问题讨论】:

    标签: wpf installation clickonce auto-update


    【解决方案1】:

    (不适合评论)

    这里有一些有用的东西——您可以在本地部署 SQLCE dll,而不是作为先决条件进行安装,这样更容易部署。查看this article

    这是另一篇有用的文章:how to keep your data safe from ClickOnce updates

    如果您查看this thread,这将更有意义。我在这个帖子中有一个帖子,里面有两个链接。一个指向处理数据库部署的 ClickOnce 方式,另一个指向与上面的博客文章基本相同的线程。

    【讨论】:

    • 感谢 robin 这给了我足够的信息让我继续前进。我已经尝试过你的方法,但我认为它会没事的。不过我还有另外两个问题。从此链接:social.msdn.microsoft.com/forums/en-US/winformssetup/thread/… 1:该代码在 wpf 项目中的位置在哪里?我猜它会在 winform 项目的 program.cs 中。 2:LocalApplicationData 是否解析为 xp、vista、windows7 等不同平台上的知名文件夹。我在 xp 上,用户可能使用 windows 7 或 vista。我应该为此担心吗?感谢您的努力和回复。
    • 没关系问题1。我发现可以使用主要方法。如在此线程中social.msdn.microsoft.com/Forums/en-US/wpf/thread/… 谢谢。顺便说一下,在您的一个博客中,您建议将连接字符串设置为运行时。这意味着连接字符串应位于 settings.properties 中,范围设置为用户,因为从技术上讲 app.config 是只读文件。如果我错了,请纠正我。如果我使用单独的 xml 文件来存储我的连接字符串,它会被 clickonce 更新覆盖吗?感谢这次有用的对话
    • LocalApplicationData 是一个 .NET 环境变量;它在 Vista 和 7 上解析为 C:\users\username\AppData\Local。在 XP 上,它类似于 c:\documents and settings\username\applicationdata\localsettings\appdata。如果找不到,请回帖,我会查找。另外,是的,它会放在 program.cs 中。我已经一年多没有做过 WPF 了——它没有用于启动应用程序的 program.cs 吗?您只需将 move-the-db 代码放在某处,然后再打开它。
    • 是的,app.config 几乎是只读的。使用 clickonce,用户设置会在安装更新时继续执行。如果您尝试一下,我认为它们最终位于 apps\2.0\data 文件夹下,它们与应用程序本身不在同一个文件夹中。
    【解决方案2】:

    首先,您不能使用该更新程序块。它适用于 .NET 1.1。在 .NET 2.0 中添加 ClickOnce 部署时,它被标记为已过时。

    您可能不需要在 GAC 中安装该 dll。在许多情况下,您可以将其包含在部署中,它会找到本地引用并使用它。它只取决于dll。因此,我建议您尝试以下方法:

    将 dll 添加到您的项目中。将“构建操作”设置为“无”。将“复制到本地目录”设置为“不复制”。

    删除项目中对该 dll 的引用,然后重新添加它。但是,不要从 GAC 中选择它,而是浏览到您刚刚添加到项目中的那个并选择它。在引用属性上,将“复制本地”设置为“真”。

    现在,当您运行它时,它将访问本地副本,而不是在 GAC 中查找副本。

    就像我说的,这在某些情况下非常有效。它适用于 SQLCE 和 DirectX,但不适用于 Infragistics。有些程序集确实必须安装在 GAC 中。您将知道的唯一方法是您是否尝试过。

    如果您最终不得不将其放入 GAC,您可以创建一个 MSI 来执行此操作,并将其部署为 ClickOnce 应用程序的先决条件。因此,您仍然可以将 ClickOnce 用于您的主应用程序。

    【讨论】:

    • 我找到了解决这个问题的方法。我尝试了 ssce 并将数据库的“构建操作”设置为内容,并将其复制到输出目录以始终复制,并且一切正常已部署 pc。我还想使用和更新程序。你能给我指个方向吗?感谢您的回复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 2010-11-10
    • 2012-12-15
    相关资源
    最近更新 更多