Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/win
diff options
context:
space:
mode:
authorMichel Le Bihan <michel@lebihan.pl>2023-06-09 11:32:26 +0300
committerPhilipp Hörist <philipp@hoerist.com>2023-06-09 11:32:26 +0300
commit92451f3fc754d27e6b70d8b4bbbe8c16cfc16da3 (patch)
treeb4d4d6e06ed0e498693608cb9a43ca14cb120df8 /win
parent939133a959699da5da78413e6b4a99026cb287c5 (diff)
ci: Add Windows MSIX package build
Diffstat (limited to 'win')
-rwxr-xr-xwin/_base.sh40
-rw-r--r--win/misc/appxmanifest.xml43
-rw-r--r--win/misc/priconfig.xml24
3 files changed, 107 insertions, 0 deletions
diff --git a/win/_base.sh b/win/_base.sh
index 5302c4ef3..c5a3ce685 100755
--- a/win/_base.sh
+++ b/win/_base.sh
@@ -49,6 +49,7 @@ function install_pre_deps {
wget \
intltool \
mingw-w64-x86_64-nsis \
+ "${MINGW_PACKAGE_PREFIX}"-librsvg \
"${MINGW_PACKAGE_PREFIX}"-toolchain \
"${MINGW_PACKAGE_PREFIX}"-python
}
@@ -314,7 +315,46 @@ function cleanup_install {
}
+function makeappx {
+ "$(find /c/Program\ Files\ \(x86\)/Windows\ Kits/10/bin/*/x64/ -name makeappx.exe -print | sort | tail -n 1)" "$@"
+}
+
+function makepri {
+ "$(find /c/Program\ Files\ \(x86\)/Windows\ Kits/10/bin/*/x64/ -name makepri.exe -print | sort | tail -n 1)" "$@"
+}
+
function build_installer {
MSYSTEM='MINGW64' /usr/bin/bash -lc "cd ${BUILD_ROOT} && makensis -NOCD -DVERSION=\"$QL_VERSION_DESC\" -DARCH=\"${MSYSTEM_CARCH}\" -DPREFIX=\"${MSYSTEM_PREFIX:1}\" ${MISC}/gajim.nsi"
MSYSTEM='MINGW64' /usr/bin/bash -lc "cd ${BUILD_ROOT} && makensis -NOCD -DVERSION=\"$QL_VERSION_DESC\" -DARCH=\"${MSYSTEM_CARCH}\" -DPREFIX=\"${MSYSTEM_PREFIX:1}\" ${MISC}/gajim-portable.nsi"
+ (
+ cd ${BUILD_ROOT}
+ rm -rf assets bundle filemapping.txt assets.resfiles appxmanifest.xml resources.pri
+ echo "[Files]" > filemapping.txt
+ find ${MSYSTEM_PREFIX:1} -type f | while read line; do
+ echo "\"$line\" \"${line/${MSYSTEM_PREFIX:1}\///}\"" >> filemapping.txt
+ done
+ mkdir -p assets bundle
+ # https://learn.microsoft.com/en-us/windows/apps/design/style/iconography/app-icon-construction
+ for size in {44,50,150}; do
+ for scale in {100,125,150,200,400}; do
+ scaled_size=$(( (${size}*${scale}+100/2)/100 ))
+ rsvg-convert -w ${scaled_size} -h ${scaled_size} -o assets/gajim${size}x${size}.scale-${scale}.png ${DIR}/../gajim/data/icons/hicolor/scalable/apps/org.gajim.Gajim.svg
+ echo "\"assets/gajim${size}x${size}.scale-${scale}.png\" \"assets/gajim${size}x${size}.scale-${scale}.png\"" >> filemapping.txt
+ done
+ done
+ for size in {16,24,32,48,256}; do
+ rsvg-convert -w ${size} -h ${size} -o assets/gajim44x44.targetsize-${size}.png ${DIR}/../gajim/data/icons/hicolor/scalable/apps/org.gajim.Gajim.svg
+ cp assets/gajim44x44.targetsize-${size}.png assets/gajim44x44.targetsize-${size}_altform-unplated.png
+ cp assets/gajim44x44.targetsize-${size}.png assets/gajim44x44.targetsize-${size}_altform-lightunplated.png
+ echo "\"assets/gajim44x44.targetsize-${size}.png\" \"assets/gajim44x44.targetsize-${size}.png\"" >> filemapping.txt
+ echo "\"assets/gajim44x44.targetsize-${size}_altform-unplated.png\" \"assets/gajim44x44.targetsize-${size}_altform-unplated.png\"" >> filemapping.txt
+ echo "\"assets/gajim44x44.targetsize-${size}_altform-lightunplated.png\" \"assets/gajim44x44.targetsize-${size}_altform-lightunplated.png\"" >> filemapping.txt
+ done
+ sed "s/QL_VERSION/${QL_VERSION}.0/" ${MISC}/appxmanifest.xml > AppxManifest.xml
+ makepri new -pr . -cf ${MISC}/priconfig.xml -mn AppxManifest.xml -of resources.pri -o
+ echo "\"resources.pri\" \"resources.pri\"" >> filemapping.txt
+ echo "\"AppxManifest.xml\" \"AppxManifest.xml\"" >> filemapping.txt
+ makeappx pack -f filemapping.txt -p bundle/Gajim_x64.msix -o
+ makeappx bundle -d bundle/ -p Gajim.msixbundle -o
+ )
}
diff --git a/win/misc/appxmanifest.xml b/win/misc/appxmanifest.xml
new file mode 100644
index 000000000..f31ce279a
--- /dev/null
+++ b/win/misc/appxmanifest.xml
@@ -0,0 +1,43 @@
+<?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:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"
+ xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities">
+ <Identity
+ Name="2126Gajim.Gajim"
+ Version="QL_VERSION"
+ Publisher="CN=7BA5D718-F03F-4E0C-BC3A-3CBC8E87B36A"
+ ProcessorArchitecture="x64" />
+ <Properties>
+ <DisplayName>Gajim</DisplayName>
+ <PublisherDisplayName>Gajim</PublisherDisplayName>
+ <Description>A fully-featured XMPP client</Description>
+ <Logo>gajim50x50.png</Logo>
+ </Properties>
+ <Resources>
+ <Resource Language="en-us" />
+ </Resources>
+ <Dependencies>
+ <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.22621.0" />
+ </Dependencies>
+ <Capabilities>
+ <rescap:Capability Name="runFullTrust"/>
+ </Capabilities>
+ <Applications>
+ <Application Id="Gajim" Executable="bin\Gajim.exe" EntryPoint="Windows.FullTrustApplication">
+ <uap:VisualElements
+ BackgroundColor="transparent"
+ DisplayName="Gajim"
+ Square44x44Logo="gajim44x44.png"
+ Square150x150Logo="gajim150x150.png"
+ Description="Gajim">
+ </uap:VisualElements>
+ <Extensions>
+ <desktop:Extension Category="windows.startupTask" Executable="bin\Gajim.exe" EntryPoint="Windows.FullTrustApplication">
+ <desktop:StartupTask TaskId="Gajim" Enabled="true" DisplayName="Gajim"/>
+ </desktop:Extension>
+ </Extensions>
+ </Application>
+ </Applications>
+</Package>
diff --git a/win/misc/priconfig.xml b/win/misc/priconfig.xml
new file mode 100644
index 000000000..c658ec8df
--- /dev/null
+++ b/win/misc/priconfig.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<resources targetOsVersion="10.0.0" majorVersion="1">
+ <index root="\" startIndexAt="\assets">
+ <default>
+ <qualifier name="Language" value="en-US"/>
+ <qualifier name="Contrast" value="standard"/>
+ <qualifier name="Scale" value="100"/>
+ <qualifier name="HomeRegion" value="001"/>
+ <qualifier name="TargetSize" value="256"/>
+ <qualifier name="LayoutDirection" value="LTR"/>
+ <qualifier name="Theme" value="dark"/>
+ <qualifier name="AlternateForm" value=""/>
+ <qualifier name="DXFeatureLevel" value="DX9"/>
+ <qualifier name="Configuration" value=""/>
+ <qualifier name="DeviceFamily" value="Universal"/>
+ <qualifier name="Custom" value=""/>
+ </default>
+ <indexer-config type="folder" foldernameAsQualifier="true" filenameAsQualifier="true" qualifierDelimiter="."/>
+ </index>
+ <!--<index startIndexAt="Start Index Here" root="Root Here">-->
+ <!-- <indexer-config type="resfiles" qualifierDelimiter="."/>-->
+ <!-- <indexer-config type="priinfo" emitStrings="true" emitPaths="true" emitEmbeddedData="true"/>-->
+ <!--</index>-->
+</resources> \ No newline at end of file