diff --git a/.gitignore b/.gitignore index 193258b4f..3a01fbbf9 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ Thumbs.db:encryptable *.pyc *.pyd *.so +appxmanifest.xml build/ coverage.xml dist/ diff --git a/appxmanifest.xml.in b/appxmanifest.xml.in new file mode 100644 index 000000000..e62564ed0 --- /dev/null +++ b/appxmanifest.xml.in @@ -0,0 +1,36 @@ + + + + + MusicBrainz Picard + MetaBrainz Foundation + Picard is an open-source cross-platform music tagger by MusicBrainz. It has the ability to identify audio files even without any existing metadata. + Square70x70Logo.png + + + + + + + + + + + + + + + + diff --git a/resources/win10/Square44x44Logo.png b/resources/win10/Square44x44Logo.png new file mode 100644 index 000000000..694ac46d0 Binary files /dev/null and b/resources/win10/Square44x44Logo.png differ diff --git a/scripts/package/win-package-app.ps1 b/scripts/package/win-package-app.ps1 index 206836621..26180a408 100644 --- a/scripts/package/win-package-app.ps1 +++ b/scripts/package/win-package-app.ps1 @@ -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 diff --git a/setup.py b/setup.py index 5e912f826..f901ed076 100644 --- a/setup.py +++ b/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)