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