python - 为什么我可以手动构建 Python MSI 安装程序,但我的 Bamboo 远程代理服务却无法?

标签 python windows windows-services windows-installer 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 build\bdist.win32\msi\Lib\site-packages
28-Apr-2011 13:26:46    creating build\bdist.win32\msi\Lib\site-packages\my_pkg
...

28-Apr-2011 13:26:46    running install_egg_info
28-Apr-2011 13:26:46    Writing build\bdist.win32\msi\Lib\site-packages\my_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:\python27\lib\distutils\core.py", line 152, in setup
  dist.run_commands()
File "c:\python27\lib\distutils\dist.py", line 953, in run_commands
  self.run_command(cmd)
File "c:\python27\lib\distutils\dist.py", line 972, in run_command
  cmd_obj.run()
File "c:\python27\lib\distutils\command\bdist_msi.py", line 243, in run
  sversion, author)
File "c:\python27\lib\msilib\__init__.py", line 139, in init_database
 db = OpenDatabase(name, MSIDBOPEN_CREATE)
_msi.MSIError: unknown error 65f

0x65f 转换为 1631,如果我的 Google Fu 功能强大,它可能会是“错误 1631:Windows 安装程序”服务启动失败”

进一步测试

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

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

最佳答案

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

关于python - 为什么我可以手动构建 Python MSI 安装程序,但我的 Bamboo 远程代理服务却无法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5825407/

相关文章:

python - Astropy 表操作 : How can I create a new table with rows grouped by values in a column?

python - 在 Flask 中创建 Python 类的多个实例

c - 获取退出代码总是返回 1

c# - 可以动态接受控制台命令的 Windows 服务应用程序

Python看门狗: ignoring duplicate events

windows - 记录进程读取/写入的所有注册表项

windows - 如何在 Windows 的 linux 子系统上安装 numpy?

c# - 停止 Windows 服务时出错

c# - 在 Windows 服务中安装和运行 WCF 服务

python - 在 python 中获取安全的用户输入