6

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

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

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

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

还有一些其他要求:

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

抱歉,帖子太长了,我认为多发比少发更好。

4

4 回答 4

5

我推荐SharpSetup。它结合了 WiX 和 C# 以实现非常灵活的实现。没有多少我发现它无法完成。

于 2012-04-16T17:32:37.817 回答
2

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

于 2012-04-23T22:37:29.470 回答
2

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

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

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

于 2012-04-16T17:30:47.827 回答
1

WIX是一个不错的选择。根据维基百科,微软使用它来为他们自己的一些产品制作安装程序。

于 2012-04-16T17:31:28.903 回答