我们使用Jenkins进行CI。
我有一个使用CMake 2.8.4和VS2010(NMake Makefiles)在Windows中构建的项目。一旦构建完成,我们手动压缩文物以给人们。如果可能的话,我想通过Jenkins创建一个安装包,而不是必须压缩所有内容。
有没有人知道可以完全使用命令行的安装程序,所以我可以将命令放在Jenkins的“执行批处理命令”窗口中?有没有人这样做过?您使用的安装程序创建者是什么?希望在免费/开源领域寻找一些东西。
答案 0 :(得分:9)
我通过Jenkins使用Inno Setup取得了很大的成功。它是Windows的免费安装程序。安装文件是通过脚本创建的,并且在执行这些脚本以创建安装文件时可以使用命令行参数。 Inno Setup脚本可以添加到源控件存储库中以跟踪更改,同时还可以让Jenkins访问它们。
答案 1 :(得分:4)
我们使用Nullsoft Scriptable Install System (NSIS),并让Jenkins在存储库中调用批处理文件来构建我们的安装程序。 NSIS二进制文件也存储在存储库中,无需在构建服务器上安装任何内容。 NSIS配置是一个文本文件,看起来像这样(来自NSIS Simple Tutorials):
# name the installer
outFile "Installer.exe"
# default section start; every NSIS script has at least one section.
section
# default section end
sectionEnd
到目前为止,它一直运作良好。配置语言有点不寻常,但它不是很难掌握,结果是稳定和可预测的。安装和网站上有很多示例和教程。
答案 2 :(得分:4)
我们使用WiX Toolset来创建Windows Installer程序包(MSI)。它是开源的。
所有工具都是命令行,我们从Ant脚本调用它们。 MSI可以在没有用户参与的情况下安装,可以用于测试。
WiX Toolset还有一个Visual Studio插件 - Votive。
如何使用WiX创建安装有good tutorial。
答案 3 :(得分:2)
我们运行InstallShield作为批处理命令来构建Windows安装程序。打包的设置过程完全由GUI驱动,但您可以从命令行构建安装程序包。 InstallShield不是免费的。
InstallShield配置是一个二进制文件,因此很难看到从构建到构建的更改。
更新:在我们的实施中(使用InstallShield 2011),有一个Jenkins作业有两个参数,ProjectConfig
和ReleaseConfig
。 Jenkins作业检出InstallShield项目,包括Project.ism
并运行:
"\Program Files\InstallShield\2011\System\IsCmdBld.exe" -a "%ProjectConfig%" -r "%ReleaseConfig%" -b "%BuildDir%" -p Project.ism
您可以通过运行IsCmdBld -?
或在InstallShield文档中获取有关命令行选项的更多详细信息。
答案 4 :(得分:0)
您可以使用 MSBuild插件将 Inno设置和 NSIS 安装系统与Jenkins集成。
Visual&安装程序(http://www.visual-installer.com)扩展,允许您在Visual Studio中创建安装项目(与MSBuild兼容)并从命令行(或直接在VS中)编译它。
所有参数和参数都存储在Visual Studio解决方案/项目文件中,因此无需手动批量传递它们。
此外,还支持多个平台,目标和配置,可以定义所有内容,并且可以在它们之间切换(与常规Visual Studio中的工作相同)。