我正在开发一个开源的C#应用程序。一段时间以来,我一直在使用我自己编写的基本.NET安装程序。然而,由于最近的改变,这对我来说已经不再实用了,因为我需要将大量文件添加到安装程序中,而且它们可能会在每个版本更新时更改。ZIP文件也不实用。
我在网上查看了一些信息,看到了很多MSI、ClickOnce、Self-extracting ZIP和(我认为最有前途的)NSIS系统。但它们似乎都不完全符合我的需求,所以我正在寻求哪种系统更适合我。
我的程序的实际安装非常简单。基本上,我只需要将bin\Release目录(及其所有子目录)复制到客户端计算机上即可。我通过在我的.NET安装程序中嵌入每个文件,并维护一个文件表来实现这一点。
不幸的是,我刚刚对我的应用程序进行了本地化。我现在有30多个.resx文件(它们被编译为dll并放置在Visual Studio的更多子目录中),显然,在我的安装程序中添加30多个文件夹和DLL不切实际。这就是为什么我在寻找答案。
还有一些其他的要求:
我在网上查看了一些信息,看到了很多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等),但不需要在其他平台上工作。
- 当我构建解决方案时,安装程序应该自动重新生成。换句话说,它应该可以通过"后期构建"部分运行。
- 安装程序生成必须能够添加到源代码存储库中。这样任何下载我的应用程序源代码的人都可以编译安装程序。