C#App的安装程序

时间:2012-04-16 17:25:32

标签: c# .net installer

我正在开发一个开源的C#应用​​程序。一段时间以来,我一直在使用我自己编写的基本.NET安装程序。但是,随着最近的更改,这对我来说已不再适用,因为我必须向安装程序添加大量文件 - 并且它们可能随每个版本而变化。 ZIP文件也不实用。

我已经在网上做了一些检查,我看到了很多MSI,ClickOnce,自解压ZIP,以及(最有希望的)NSIS系统。它们似乎都不符合我的需求,所以我正在寻找有关使用哪个系统的建议。

我的程序的实际安装非常简单。基本上,我只需要将bin \ Release目录(和所有子目录)复制到客户端的计算机上。通过在.NET安装程序中嵌入每个文件,并维护一个文件表,我一直在实现这一点。

不幸的是,我只是本地化了我的应用。我现在有30多个.resx文件(由Visual Studio编译为dll并放入MORE子目录),显然,向我的安装程序添加30多个文件夹和DLL是不切实际的。因此,为什么我在这个搜索。

还有一些其他要求:

  • 安装程序应在预定义目录中搜索指定的.exe。 (我的应用程序设计为替代品)如果找不到.exe,则应提示其位置
  • 安装程序应验证“OldApp.exe.bak”是否存在。如果没有,则应将“OldApp.exe”重命名为“OldApp.exe.bak”
  • 安装程序应更新文件。即,如果“Culture.de.dll”没有改变,安装程序将不管它。
  • 安装程序应该适用于所有.NET IDE的所有Windows版本(VS,SharpDevelop,Mono等),但不需要在其他平台上运行。
  • 构建解决方案时,应自动重新生成安装程序。换句话说,它应该可以通过“构建后”部分运行。
  • 必须能够将安装程序生成添加到源代码仓库中。这样下载我的应用程序源的任何人都可以编译安装程序。

对于这篇长篇文章感到抱歉,我认为最好发布更多信息。

4 个答案:

答案 0 :(得分:5)

我建议SharpSetup。它结合了WiX和C#,实现了非常灵活的实现。我发现它无法完成。

答案 1 :(得分:2)

我们广泛使用WIX:http://wix.codeplex.com/

您可能必须使用某些退出例程来自定义安装程序以执行不同寻常的操作,但Windows Installer框架中有一些钩子可以让您这样做。

您可以将这些定义文件(XML)放在源代码管理中,并且可以配置构建以执行安装。但是,获取源代码的任何人都需要安装WIX实用程序。

答案 2 :(得分:1)

WIX是个好人。根据{{​​3}},Microsoft使用它为一些自己的产品生成安装程序。

答案 3 :(得分:1)

我会推荐NSIS。根据我的经验,NSIS文档或社区示例中涵盖了我所需的任何安装程序功能。我无法评论NSIS与Visual Studio的集成,因为我使用与Jenkins构建服务器集成的NSIS。似乎有一个名为Visual & Installer的免费Visual Studio加载项,它提供与Visual Studio的NSIS集成。我没有亲自使用它,但它似乎目前正在积极开发,所以可能值得一试。