.NET解决方案设置考虑更新时的建议

时间:2009-03-27 18:43:00

标签: c# .net winforms

我编写了一个winforms应用程序,它被部署为setup / msi安装。不使用ClickOnce部署的主要原因是:

  1. 需要在应用程序目录中存储持久性数据
  2. 需要能够为“所有用户”安装
  3. 目前,该应用程序使用“一个.exe来统治它们”。本质上,安装后的“程序文件”目录包含.exe,.ico和.config文件。

    我正在尝试在MSDN上遵循此建议/教程,以便我可以拥有更新机制: http://msdn.microsoft.com/en-us/library/aa367564.aspx

    我觉得拥有单个.exe不一定是最好的方法。我想知道在创建.dll库和将我的应用程序类放在项目中的.cs文件时是否存在“经验法则”?

    更新是否可以像替换.dll文件而不是.exe?

    一样简单

2 个答案:

答案 0 :(得分:2)

总的来说,我同意The Great White North给出的答案,重申一下:

  1. 有充分的理由将任何重要大小/功能的应用程序分解为单独的项目/组件。
  2. 只需将程序集复制到应用程序的目录(假设程序集彼此兼容)即可安装/更新.NET应用程序。
  3. 我的另一个强烈建议是,您不要在Windows Installer安装程序包(即VS部署项目生成的内容)和所谓的“xcopy部署”之间混合搭配(即复制需要去的程序集) )。如果您“xcopy”更新由Windows Installer程序包安装的文件,Windows Installer可能会尝试为您“修复它”。

    据说可以创建Windows Installer“补丁”,它只包含/更新已更改的文件,但我从来没有充分的理由尝试使其工作。无论如何,我相当确定这超出了VS部署项目的能力。

答案 1 :(得分:0)

一般来说,我所遵循的“经验法则”是根据功能将解决方案分解为项目。这有助于测试等。

在更新方面,似乎来自this article on MSDN的“应用程序 - 私人程序集”部分,是的,您可以将应用程序的新dll删除到其文件夹中并完成“更新”它就像这一点。