mirror of
https://github.com/fergalmoran/picard.git
synced 2025-12-26 19:29:01 +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
|
*.pyc
|
||||||
*.pyd
|
*.pyd
|
||||||
*.so
|
*.so
|
||||||
|
appxmanifest.xml
|
||||||
build/
|
build/
|
||||||
coverage.xml
|
coverage.xml
|
||||||
dist/
|
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..."
|
Write-Output "Building Windows installer..."
|
||||||
pyinstaller --noconfirm --clean picard.spec 2>&1 | %{ "$_" }
|
pyinstaller --noconfirm --clean picard.spec 2>&1 | %{ "$_" }
|
||||||
ThrowOnExeError "PyInstaller failed"
|
ThrowOnExeError "PyInstaller failed"
|
||||||
CodeSignBinary .\dist\picard\picard.exe
|
CodeSignBinary dist\picard\picard.exe
|
||||||
CodeSignBinary .\dist\picard\fpcalc.exe
|
CodeSignBinary dist\picard\fpcalc.exe
|
||||||
CodeSignBinary .\dist\picard\discid.dll
|
CodeSignBinary dist\picard\discid.dll
|
||||||
|
|
||||||
# Workaround for https://github.com/pyinstaller/pyinstaller/issues/4429
|
# Workaround for https://github.com/pyinstaller/pyinstaller/issues/4429
|
||||||
If (Test-Path dist\picard\PyQt5\translations -PathType Container) {
|
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
|
# Build the installer
|
||||||
makensis.exe /INPUTCHARSET UTF8 installer\picard-setup.nsi 2>&1 | %{ "$_" }
|
makensis.exe /INPUTCHARSET UTF8 installer\picard-setup.nsi 2>&1 | %{ "$_" }
|
||||||
ThrowOnExeError "NSIS failed"
|
ThrowOnExeError "NSIS failed"
|
||||||
CodeSignBinary .\installer\picard-setup-*.exe
|
CodeSignBinary installer\picard-setup-*.exe
|
||||||
|
|
||||||
Write-Output "Building portable exe..."
|
Write-Output "Building portable exe..."
|
||||||
pyinstaller --noconfirm --clean --onefile picard.spec 2>&1 | %{ "$_" }
|
pyinstaller --noconfirm --clean --onefile picard.spec 2>&1 | %{ "$_" }
|
||||||
ThrowOnExeError "PyInstaller failed"
|
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)
|
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})
|
generate_file('scripts/picard.in', 'scripts/' + PACKAGE_NAME, {'localedir': self.localedir, 'autoupdate': not self.disable_autoupdate})
|
||||||
if sys.platform == 'win32':
|
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
|
# Temporarily setting it to this value to generate a nice name for Windows app
|
||||||
args['name'] = 'MusicBrainz Picard'
|
args['name'] = 'MusicBrainz Picard'
|
||||||
file_version = PICARD_VERSION[0:3] + PICARD_VERSION[4:]
|
args['file_version'] = file_version_str
|
||||||
args['file_version'] = '.'.join([str(v) for v in file_version])
|
|
||||||
if os.path.isfile('installer/picard-setup.nsi.in'):
|
if os.path.isfile('installer/picard-setup.nsi.in'):
|
||||||
generate_file('installer/picard-setup.nsi.in', 'installer/picard-setup.nsi', args)
|
generate_file('installer/picard-setup.nsi.in', 'installer/picard-setup.nsi', args)
|
||||||
version_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})
|
generate_file('win-version-info.txt.in', 'win-version-info.txt', {**args, **version_args})
|
||||||
args['name'] = 'picard'
|
args['name'] = 'picard'
|
||||||
|
|
||||||
|
generate_file('appxmanifest.xml.in', 'appxmanifest.xml', {
|
||||||
|
'app-id': PICARD_APP_ID,
|
||||||
|
'version': file_version_str
|
||||||
|
})
|
||||||
elif sys.platform == 'linux':
|
elif sys.platform == 'linux':
|
||||||
self.run_command('build_appdata')
|
self.run_command('build_appdata')
|
||||||
build.run(self)
|
build.run(self)
|
||||||
|
|||||||
Reference in New Issue
Block a user