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

Фон

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

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

Error

Ниже приведена часть моего журнала сборки (для контекста):

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 Ответ

3 голосов
/ 29 апреля 2011

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

...