为什么我可以手动构建PythonMSI安装程序,但我的Bamboo远程代理服务却失败了



背景

我的Bamboo服务器正在Linux上运行。我使用Bamboo为Python应用程序构建可执行安装程序和源代码发行版。

我无法从Linux为我的Python包构建MSI安装程序,所以我在另一台机器上的Windows 7 64位上运行Bamboo Remote Agent作为服务。这个远程代理被配置为提供构建Windows二进制文件的能力,因此Bamboo运行MSI&EXE在此基础上构建。

.zip源dist和.exe安装程序已成功构建。但是,当我的构建脚本尝试构建.msi安装程序时,它会失败。

生成脚本

构建脚本是一个非常简单的批处理文件:

python setup.py bdist --formats=zip
IF %ERRORLEVEL% NEQ 0 EXIT /B 1
python setup.py bdist_wininst
IF %ERRORLEVEL% NEQ 0 EXIT /B 1
echo ***Building msi installer***
echo.
python setup.py bdist_msi
IF %ERRORLEVEL% NEQ 0 EXIT /B 1

错误

以下是我的构建日志的一部分(用于上下文(:

28-Apr-2011 13:26:46    ***Building msi installer***
...
28-Apr-2011 13:26:46    creating buildbdist.win32msiLibsite-packages
28-Apr-2011 13:26:46    creating buildbdist.win32msiLibsite-packagesmy_pkg
...
28-Apr-2011 13:26:46    running install_egg_info
28-Apr-2011 13:26:46    Writing buildbdist.win32msiLibsite-packagesmy_pkg-0.4.0b23-py2.7.egg-info

我从Python中得到以下异常回溯:

Traceback (most recent call last):
File "setup.py", line 38, in <module>
  'my_pkg': ['default_config.cfg']},
File "c:python27libdistutilscore.py", line 152, in setup
  dist.run_commands()
File "c:python27libdistutilsdist.py", line 953, in run_commands
  self.run_command(cmd)
File "c:python27libdistutilsdist.py", line 972, in run_command
  cmd_obj.run()
File "c:python27libdistutilscommandbdist_msi.py", line 243, in run
  sversion, author)
File "c:python27libmsilib__init__.py", line 139, in init_database
 db = OpenDatabase(name, MSIDBOPEN_CREATE)
_msi.MSIError: unknown error 65f

0x65f翻译成1631,如果我的Google Fu很强,可能是"Error 1631: The Windows Installer service failed to start"

进一步测试

如果我转到执行构建的机器上Bamboo代理的构建目录,并从Windows资源管理器手动运行构建脚本批处理文件,则.msi构建成功。

请注意,我在以前的版本中使用了相同的SVN repo修订版,但从那以后,我不得不移动我的开发系统,可能无意中更改了Windows中的一些配置(或者可能是Windows更新破坏了它(。

如果Bamboo代理是Windows服务,您可能需要使用提升的权限来运行它。关于服务帐户如何访问MSI服务,有一些奇怪的规则。(我从未缩小所需的确切权限。(

相关内容

  • 没有找到相关文章

最新更新