Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#应用程序的安装程序_C#_.net_Installation - Fatal编程技术网

C#应用程序的安装程序

C#应用程序的安装程序,c#,.net,installation,C#,.net,Installation,我正在开发一个开源的C#应用程序。有一段时间,我一直在使用自己编写的基本.NET安装程序。然而,随着最近的一次更改,这对我来说不再实用,因为我必须向安装程序中添加大量文件,而且它们可能会随着每个版本的变化而变化。ZIP文件也不实用 我在网上做了一些检查,我看到很多MSI、ClickOnce、自解压ZIP和(我认为最有希望的)NSIS系统。它们似乎都不完全符合我的需要,所以我正在寻找使用哪种系统的建议 我的程序的实际安装非常简单。基本上,我只需要将bin\Release目录(和所有子目录)复制到客

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

我在网上做了一些检查,我看到很多MSI、ClickOnce、自解压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等)一起使用,但不需要在其他平台上使用
  • 当我构建解决方案时,安装程序应该自动重新生成。换句话说,它应该可以通过“后期构建”部分运行
  • 安装程序生成必须能够添加到源代码repo。这样,任何下载我的应用程序源代码的人都可以编译安装程序
很抱歉文章太长,我觉得多发比少发要好。

我们广泛使用WIX:

您可能需要使用一些退出例程来定制安装程序,以完成一些不同寻常的事情,但Windows Installer框架中有一些挂钩可以让您做到这一点


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

是一个不错的选择。据介绍,微软使用它为自己的一些产品生产安装程序。

我推荐。它结合了WiX和C#,实现了相当灵活的实现。我发现它没有什么做不到的。

我推荐NSIS。根据我的经验,NSIS文档或社区示例中已经介绍了我所需的任何安装程序功能。我不能评论NSIS与Visual Studio的集成,因为我使用的是与Jenkins构建服务器集成的NSIS。似乎有一个名为的免费VisualStudio加载项,它提供了NSIS与VisualStudio的集成。我个人没有使用过它,但它目前似乎正在积极开发中,因此可能值得一看。

您的开源应用程序的名称/url是什么?我选择了这个应用程序,因为它结合了WIX和其他功能。非常有用:)