C#应用程序的安装程序

6
我正在开发一个开源的C#应用程序。一段时间以来,我一直在使用我自己编写的基本.NET安装程序。然而,由于最近的改变,这对我来说已经不再实用了,因为我需要将大量文件添加到安装程序中,而且它们可能会在每个版本更新时更改。ZIP文件也不实用。
我在网上查看了一些信息,看到了很多MSI、ClickOnce、Self-extracting ZIP和(我认为最有前途的)NSIS系统。但它们似乎都不完全符合我的需求,所以我正在寻求哪种系统更适合我。
我的程序的实际安装非常简单。基本上,我只需要将bin\Release目录(及其所有子目录)复制到客户端计算机上即可。我通过在我的.NET安装程序中嵌入每个文件,并维护一个文件表来实现这一点。
不幸的是,我刚刚对我的应用程序进行了本地化。我现在有30多个.resx文件(它们被编译为dll并放置在Visual Studio的更多子目录中),显然,在我的安装程序中添加30多个文件夹和DLL不切实际。这就是为什么我在寻找答案。
还有一些其他的要求:
  • 安装程序应该在预定义的目录中搜索指定的.exe文件(我的应用程序被设计成一个替换)。如果找不到.exe文件,它应该提示你输入位置。
  • 安装程序应该验证"OldApp.exe.bak"是否存在。如果不存在,它应该将"OldApp.exe"重命名为"OldApp.exe.bak"。
  • 安装程序应该更新文件。例如,如果"Culture.de.dll"没有更改,则安装程序会保持原样。
  • 安装程序应该与所有.NET IDE的所有Windows版本兼容(VS、SharpDevelop、Mono等),但不需要在其他平台上工作。
  • 当我构建解决方案时,安装程序应该自动重新生成。换句话说,它应该可以通过"后期构建"部分运行。
  • 安装程序生成必须能够添加到源代码存储库中。这样任何下载我的应用程序源代码的人都可以编译安装程序。
抱歉发了这么长的帖子,我想发多一些比较好。

你的开源应用程序叫什么名字/网址? - Shiplu Mokaddim
4个回答

5
我建议使用SharpSetup。它将WiX和C#结合起来,实现非常灵活。我发现它几乎可以完成所有任务。

我选择了这个,因为它将WIX与其他功能结合在了一起。非常有用 :) - Xcelled

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

2
我们广泛使用WIX:http://wix.codeplex.com/ 您可能需要使用一些退出例程来自定义安装程序以执行一些非常规操作,但是Windows Installer框架中有钩子可以让您这样做。
您可以将这些定义文件(XML)放在源代码控制中,并配置构建以执行安装。但是,任何获得您源代码的人都需要安装WIX实用程序。

1

WIX 是一个不错的工具。根据维基百科的介绍,微软公司使用它来制作一些自己产品的安装程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接