2010-05-31 58 views
0

我一直面临着部署problem.I've建有visual studio 2008一个WPF application并创建了一个installer(MSI)工作正常但是,增加automatic更新是件很痛苦的事情。我在windowsclient.net上看到了this article,但它看起来很老,但对我来说可能是完美的东西。然后我看着.Net应用程序updater block v2.0,它使用enterprise library june 2005,由于某种原因,它不在我的机器上安装。WPF部署策略dilemma.clickonce(仅限定制)+自动更新VS安装程序(无限costomization)没有自动更新

我想我需要使用较新的企业级磁带库,所以我installed and compiled Enterprise 4.1(october 2008)但没有更好的happened.To我决定给一个尝试CLickonce deployment.After它挣扎着,它几乎perfect.I意识到,当我正在测试我的机器上的clickonce提供的更新,这是XP,我没有注意到有需要sqlite dll in the GAC。当然它已经在那里了。我注意到,当我搬到Vista时,有一个问题。检查网络后,我知道it's impossible to add a dll to the Global Assembly Cache
现在我被卡住了,我想我已经打了一堵墙。可以分享他的一些经验吗?我愿意尝试更新程序块,如果我能得到帮助。

感谢您的阅读!

回答

1

(不适合在评论)

这里的东西有用的 - 你可以部署SQLCE dll的本地,而不是安装的先决条件,这使得它更易于部署。退房this article

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

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

+0

谢谢罗宾,这给了我足够的信息去。我仍然尝试你的方法,但我认为它会好起来的,但我还有其他两个问题。从这个链接:http://social.msdn.microsoft.com/forums/en-US/winformssetup/thread/fc92694c-fd68-4ce6-b1c5-617359f08883/ 1:该代码在wpf projet中的位置?我猜测它将在winform项目中的program.cs中。 2:LocalApplicationData是否解析为xp,vista,windows7.i'm等不同平台上的知名文件夹,用户可能会使用Windows 7或Vista。我应该为此担心吗?感谢您的努力和回复。 – 2010-06-02 10:23:38

+0

没关系问题1.我发现可以使用主要方法。正如在这个线程http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/e5757d5c-28f3-4233-8a5f-00116587d5c7谢谢。顺便在你的博客之一,你建议设置一个连接字符串的runtime.that意味着连接字符串应该在settings.properties设置为用户的范围,因为技术上app.config是一个只读file.correct我,如果我错了。如果我使用单独的XML文件来存储我的连接字符串,是否会被clickonce更新覆盖?感谢这个有用的对话 – 2010-06-02 12:17:54

+0

LocalApplicationData是一个.NET环境变量;它在Vista和7上解析为C:\ users \ username \ AppData \ Local。在XP上,它类似于c:\ documents和settings \ username \ applicationdata \ localsettings \ appdata。如果你找不到它,请回复,我会查找它。另外,是的,它会去program.cs。我在一年内没有完成WPF - 它没有一个用于启动应用程序的program.cs?在打开它之前,您只需将move-the-db代码放在某处即可。 – RobinDotNet 2010-06-02 16:53:20

0

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

您可能不需要在GAC中安装该dll。在很多情况下,您可以将其包含在部署中,并找到本地引用并使用它。它只依赖于dll。所以这里是我建议你尝试:

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

删除项目中的引用到该dll,然后重新添加它。但不是从GAC中选择,而是浏览到您刚添加到项目中的那个并选择它。在引用属性上,将'copy local'设置为'true'。

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

就像我说的,这在某些情况下效果很好。它适用于SQLCE和DirectX,但不适用于Infragistics。某些程序集确实必须在GAC中安装。你会知道的唯一方法就是如果你尝试它。

如果您最终必须将其放入GAC中,您可以创建一个MSI来执行此操作,并将其作为ClickOnce应用程序的先决条件进行部署。所以你仍然可以为你的主应用程序使用ClickOnce。

+0

我找到了解决这个问题的方法。我试过了ssce,并将数据库的“构建动作”设置为内容,并将其复制到输出目录以便始终复制,并且在部署的pc中一切正常。想要使用和更新。你能指点我一个方向吗?谢谢你的回复,虽然 – 2010-06-01 16:45:53