windows - Hvorfor kan jeg manuelt opbygge et Python MSI-installationsprogram, men min Bamboo remote agent service mislykkes?

Indlæg af Hanne Mølgaard Plasc

Problem



Baggrund



Min Bamboo server kører på Linux. Jeg bruger Bamboo til at oprette eksekverbare installatører og kildefordelinger til en Python app.


Jeg kan ikke bygge MSI-installatører til min Python-pakke fra Linux, så jeg kører en Bamboo Remote Agent som en tjeneste på Windows 7 64-bit på en anden maskine. Denne fjernbetjening agent er konfigureret til at give mulighed for at opbygge Windows-binære filer, så Bamboo kører MSI &EXE bygger på den.


.Zip source dist og .exe installer er bygget succesfuldt. Men min build script mislykkes, når det forsøger at bygge .msi installer.


Byg script



Byggeskriptet er en meget enkel batchfil:


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


Fejl



Nedenfor er en del af min build log (for kontekst):


28-Apr-2011 13:26:46    ***Building msi installer***
...
28-Apr-2011 13:26:46    creating builddist.win32msiLibsite-packages
28-Apr-2011 13:26:46    creating builddist.win32msiLibsite-packagesmy\_pkg
...

28-Apr-2011 13:26:46    running install\_egg\_info
28-Apr-2011 13:26:46    Writing builddist.win32msiLibsite-packagesmy\_pkg-0.4.0b23-py2.7.egg-info


Jeg får følgende undtagelsesspor tilbage fra Python:


Traceback (most recent call last):
File "setup.py", line 38, in <module>
  'my\_pkg': ['default\_config.cfg']},
File "c:python27libdistutilscore.py", line 152, in setup
  dist.run\_commands()
File "c:python27libdistutilsdist.py", line 953, in run\_commands
  self.run\_command(cmd)
File "c:python27libdistutilsdist.py", line 972, in run\_command
  cmd\_obj.run()
File "c:python27libdistutilscommanddist\_msi.py", line 243, in run
  sversion, author)
File "c:python27libmsilib\_\_init\_\_.py", line 139, in init\_database
 db = OpenDatabase(name, MSIDBOPEN\_CREATE)
\_msi.MSIError: unknown error 65f


0x65f oversættes til 1631, som - hvis min Google Fu er stærk - kan være "Error 1631: The Windows Installer service failed to start".


Yderligere test



Hvis jeg går til bambusagentens byggekatalog på maskinen, der udfører bygningen, og manuelt kører build script-filfilen fra Windows Stifinder, er .msi-bygningen succesfuld.


Bemærk, at jeg havde alt dette i en tidligere opbygning med samme SVN repo revision , men jeg har måttet flytte mine udviklingssystemer siden og muligvis ved en uafbrudt ændring af en konfiguration i Windows (eller måske en Windows opdatering brød det).

Bedste reference


Hvis bambusagenten er en Windows-tjeneste, skal du muligvis køre den med forhøjede rettigheder. Der er mærkelige regler om, hvordan servicekonti kan få adgang til MSI-tjenesten. (Jeg har aldrig indsnævret de nøjagtige tilladelser, der kræves.)