2

バックグラウンド

私のBambooサーバーはLinux上で実行されています。私はBambooを使用して、Pythonアプリの実行可能インストーラーとソースディストリビューションを構築しています。

LinuxからPythonパッケージのMSIインストーラーをビルドできないため、別のマシンのWindows764ビットでBambooRemoteAgentをサービスとして実行しています。このリモートエージェントは、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これは、私のGoogleFuが強力な場合です"Error 1631: The Windows Installer service failed to start"

さらなるテスト

ビルドを実行しているマシンのBambooエージェントのビルドディレクトリに移動し、Windowsエクスプローラーからビルドスクリプトバッチファイルを手動で実行すると、.msiビルドは成功します。

これはすべて同じSVNリポジトリリビジョンの以前のビルドで機能していましたが、それ以降、開発システムを移動する必要があり、Windowsの一部の構成を誤って変更した可能性があります(またはWindows Updateによって破損した可能性があります)。

4

1 に答える 1

3

BambooエージェントがWindowsサービスの場合、昇格された特権で実行する必要がある場合があります。サービスアカウントがMSIサービスにアクセスする方法については奇妙なルールがあります。(必要な正確な権限を絞り込んだことはありません。)

于 2011-04-29T03:40:08.550 に答える