Почему я могу вручную создать установщик Python MSI, но моя служба удаленного агента Bamboo не работает?

Фон

Мой сервер Bamboo работает в Linux. Я использую Bamboo для сборки исполняемых установщиков и исходных текстов для приложения Python.

Я не могу собрать установщики MSI для своего пакета Python из Linux, поэтому я запускаю удаленный агент Bamboo в качестве службы в 64-разрядной версии Windows 7 на другом компьютере. Этот удаленный агент настроен для обеспечения возможности создания двоичных файлов Windows, поэтому Bamboo запускает сборки MSI & EXE на нем.

Исходный дистрибутив.zip и установщик.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 сильный - может быть "Error 1631: The Windows Installer service failed to start",

Дальнейшее тестирование

Если я захожу в каталог сборки агента Bamboo на компьютере, выполняющем сборку, и вручную запускаю пакетный файл сценария сборки из Проводника Windows, сборка.msi прошла успешно.

Обратите внимание, что все это работало в предыдущей сборке с той же версией репозитория SVN, но с тех пор мне пришлось перенести свои системы разработки и, возможно, случайно изменить некоторую конфигурацию в Windows (или, возможно, обновление Windows сломало ее).

1 ответ

Решение

Если агент Bamboo является службой Windows, вам может потребоваться запустить его с повышенными привилегиями. Существуют странные правила о том, как учетные записи служб могут получать доступ к службе MSI. (Я никогда не сужал точные разрешения, которые требуются.)

Другие вопросы по тегам