Почему я могу вручную создать установщик 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. (Я никогда не сужал точные разрешения, которые требуются.)