mirror of
https://github.com/fergalmoran/picard.git
synced 2025-12-22 09:18:18 +00:00
PICARD-1669: Build Win 10 app package
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -17,6 +17,7 @@ Thumbs.db:encryptable
|
||||
*.pyc
|
||||
*.pyd
|
||||
*.so
|
||||
appxmanifest.xml
|
||||
build/
|
||||
coverage.xml
|
||||
dist/
|
||||
|
||||
36
appxmanifest.xml.in
Normal file
36
appxmanifest.xml.in
Normal file
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Package
|
||||
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
|
||||
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
|
||||
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities">
|
||||
<Identity
|
||||
Name="%(app-id)s"
|
||||
Version="%(version)s"
|
||||
Publisher="CN=Metabrainz Foundation Inc., O=Metabrainz Foundation Inc., L=San Luis Obispo, S=California, C=US"
|
||||
ProcessorArchitecture="x64"/>
|
||||
<Properties>
|
||||
<DisplayName>MusicBrainz Picard</DisplayName>
|
||||
<PublisherDisplayName>MetaBrainz Foundation</PublisherDisplayName>
|
||||
<Description>Picard is an open-source cross-platform music tagger by MusicBrainz. It has the ability to identify audio files even without any existing metadata.</Description>
|
||||
<Logo>Square70x70Logo.png</Logo>
|
||||
</Properties>
|
||||
<Resources>
|
||||
<Resource Language="en-us"/>
|
||||
</Resources>
|
||||
<Dependencies>
|
||||
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17135.0" MaxVersionTested="10.0.18363.0"/>
|
||||
</Dependencies>
|
||||
<Capabilities>
|
||||
<rescap:Capability Name="runFullTrust"/>
|
||||
</Capabilities>
|
||||
<Applications>
|
||||
<Application Id="Picard" Executable="picard.exe" EntryPoint="Windows.FullTrustApplication">
|
||||
<uap:VisualElements
|
||||
DisplayName="MusicBrainz Picard"
|
||||
Description="Tag your music with the next generation MusicBrainz tagger"
|
||||
Square150x150Logo="Square150x150Logo.png"
|
||||
Square44x44Logo="Square44x44Logo.png"
|
||||
BackgroundColor="#736DAB"/>
|
||||
</Application>
|
||||
</Applications>
|
||||
</Package>
|
||||
BIN
resources/win10/Square44x44Logo.png
Normal file
BIN
resources/win10/Square44x44Logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
@@ -36,9 +36,9 @@ ThrowOnExeError "setup.py build_ext -i failed"
|
||||
Write-Output "Building Windows installer..."
|
||||
pyinstaller --noconfirm --clean picard.spec 2>&1 | %{ "$_" }
|
||||
ThrowOnExeError "PyInstaller failed"
|
||||
CodeSignBinary .\dist\picard\picard.exe
|
||||
CodeSignBinary .\dist\picard\fpcalc.exe
|
||||
CodeSignBinary .\dist\picard\discid.dll
|
||||
CodeSignBinary dist\picard\picard.exe
|
||||
CodeSignBinary dist\picard\fpcalc.exe
|
||||
CodeSignBinary dist\picard\discid.dll
|
||||
|
||||
# Workaround for https://github.com/pyinstaller/pyinstaller/issues/4429
|
||||
If (Test-Path dist\picard\PyQt5\translations -PathType Container) {
|
||||
@@ -52,9 +52,18 @@ Remove-Item -Path dist\picard\libssl-1_1.dll
|
||||
# Build the installer
|
||||
makensis.exe /INPUTCHARSET UTF8 installer\picard-setup.nsi 2>&1 | %{ "$_" }
|
||||
ThrowOnExeError "NSIS failed"
|
||||
CodeSignBinary .\installer\picard-setup-*.exe
|
||||
CodeSignBinary installer\picard-setup-*.exe
|
||||
|
||||
Write-Output "Building portable exe..."
|
||||
pyinstaller --noconfirm --clean --onefile picard.spec 2>&1 | %{ "$_" }
|
||||
ThrowOnExeError "PyInstaller failed"
|
||||
CodeSignBinary .\dist\MusicBrainz-Picard-*.exe
|
||||
CodeSignBinary dist\MusicBrainz-Picard-*.exe
|
||||
|
||||
Write-Output "Building app package..."
|
||||
ThrowOnExeError "setup.py build failed"
|
||||
$PicardVersion = (python -c "import picard; print(picard.__version__)")
|
||||
$PackageFile = "dist\MusicBrainz Picard $PicardVersion.msix"
|
||||
Copy-Item appxmanifest.xml dist\picard
|
||||
MakeAppx pack /o /d dist\picard\ /p $PackageFile
|
||||
ThrowOnExeError "MakeAppx failed"
|
||||
CodeSignBinary $PackageFile
|
||||
|
||||
11
setup.py
11
setup.py
@@ -218,10 +218,12 @@ class picard_build(build):
|
||||
log.info('generating scripts/%s from scripts/picard.in', PACKAGE_NAME)
|
||||
generate_file('scripts/picard.in', 'scripts/' + PACKAGE_NAME, {'localedir': self.localedir, 'autoupdate': not self.disable_autoupdate})
|
||||
if sys.platform == 'win32':
|
||||
file_version = PICARD_VERSION[0:3] + PICARD_VERSION[4:]
|
||||
file_version_str = '.'.join([str(v) for v in file_version])
|
||||
|
||||
# Temporarily setting it to this value to generate a nice name for Windows app
|
||||
args['name'] = 'MusicBrainz Picard'
|
||||
file_version = PICARD_VERSION[0:3] + PICARD_VERSION[4:]
|
||||
args['file_version'] = '.'.join([str(v) for v in file_version])
|
||||
args['file_version'] = file_version_str
|
||||
if os.path.isfile('installer/picard-setup.nsi.in'):
|
||||
generate_file('installer/picard-setup.nsi.in', 'installer/picard-setup.nsi', args)
|
||||
version_args = {
|
||||
@@ -230,6 +232,11 @@ class picard_build(build):
|
||||
}
|
||||
generate_file('win-version-info.txt.in', 'win-version-info.txt', {**args, **version_args})
|
||||
args['name'] = 'picard'
|
||||
|
||||
generate_file('appxmanifest.xml.in', 'appxmanifest.xml', {
|
||||
'app-id': PICARD_APP_ID,
|
||||
'version': file_version_str
|
||||
})
|
||||
elif sys.platform == 'linux':
|
||||
self.run_command('build_appdata')
|
||||
build.run(self)
|
||||
|
||||
Reference in New Issue
Block a user