Switch to using MSYS2 for Windows build
|
@ -19,6 +19,7 @@ stamp-h1
|
||||||
Makefile
|
Makefile
|
||||||
__pycache__/
|
__pycache__/
|
||||||
src/gtk/
|
src/gtk/
|
||||||
|
win/_build_root
|
||||||
|
|
||||||
syntax: regexp
|
syntax: regexp
|
||||||
^config\.*
|
^config\.*
|
||||||
|
|
56
appveyor.yml
|
@ -1,8 +1,7 @@
|
||||||
environment:
|
environment:
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
|
- MSYS: "C:\\msys64\\mingw32.exe"
|
||||||
- PYTHON: "C:\\Python34"
|
|
||||||
|
|
||||||
branches:
|
branches:
|
||||||
only:
|
only:
|
||||||
|
@ -10,49 +9,36 @@ branches:
|
||||||
|
|
||||||
clone_depth: 1
|
clone_depth: 1
|
||||||
|
|
||||||
|
# init:
|
||||||
|
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
||||||
|
|
||||||
install:
|
install:
|
||||||
- git clone --depth=1 --branch=gtk3 https://dev.gajim.org/gajim/gajim-plugins.git c:\projects\gajim-plugins
|
|
||||||
|
|
||||||
# Download & Install Dependencys
|
- ps: |
|
||||||
- ps: c:\\projects\\gajim\\dependencys.ps1
|
function bash($command) {
|
||||||
|
Write-Host $command -NoNewline
|
||||||
|
cmd /c start /wait C:\msys64\usr\bin\sh.exe --login -c $command
|
||||||
|
Write-Host " - OK" -ForegroundColor Green
|
||||||
|
}
|
||||||
|
|
||||||
- set PATH=C:\\MinGW\\bin;%PATH%
|
bash 'pacman -Sy --noconfirm git'
|
||||||
- "%PYTHON%\\python.exe -m pip install --upgrade pip"
|
bash 'git clone https://dev.gajim.org/lovetox/gajim.git'
|
||||||
- "%PYTHON%\\python.exe -m pip install -r c:\\projects\\gajim\\requirements.txt"
|
|
||||||
|
|
||||||
- ps: Add-Content C:\Python34\Lib\site-packages\google\__init__.py " "
|
- cmd: '%MSYS% C:/msys64/home/appveyor/gajim/win/build.sh'
|
||||||
- "%PYTHON%\\python.exe -m pip install --no-dependencies python-axolotl"
|
# Ugly workaround, because i found no way to tell when mingw32.exe returns
|
||||||
- "%PYTHON%\\python.exe -m pip install --global-option=build_ext --global-option --compiler=mingw32 python-axolotl-curve25519"
|
- cmd: timeout 900
|
||||||
|
|
||||||
# Prepare Build Dir
|
|
||||||
- cd c:\\projects\\gajim\\
|
|
||||||
- xcopy . ..\gajim_built /e /i
|
|
||||||
- cd ..\gajim_built
|
|
||||||
|
|
||||||
# Copy Shipped Plugins
|
|
||||||
- xcopy ..\gajim-plugins\plugin_installer plugins\plugin_installer /e /i
|
|
||||||
|
|
||||||
# Compile Translation Strings
|
|
||||||
- cmd: for %%l in (po\*.po) do mkdir po\%%~nl & mkdir po\%%~nl\LC_MESSAGES & msgfmt -o po\%%~nl\LC_MESSAGES\gajim.mo %%l
|
|
||||||
|
|
||||||
# Make Gajim.exe
|
|
||||||
- "%PYTHON%\\python.exe setup_win32.py build_exe"
|
|
||||||
|
|
||||||
- move build\exe.win32-3.4 .
|
|
||||||
- rmdir build
|
|
||||||
- rename exe.win32-3.4 build
|
|
||||||
|
|
||||||
# Make Installer
|
|
||||||
- ps: '& "C:\Program Files (x86)\NSIS\makensis.exe" gajim.nsi'
|
|
||||||
- ps: '& "C:\Program Files (x86)\NSIS\makensis.exe" gajim-portable.nsi'
|
|
||||||
|
|
||||||
# Push Installer Exe
|
# Push Installer Exe
|
||||||
- ps: $env:TIME_STRING=(get-date -UFormat "%Y-%m-%d").ToString()
|
- ps: $env:TIME_STRING=(get-date -UFormat "%Y-%m-%d").ToString()
|
||||||
- ps: Push-AppveyorArtifact Gajim.exe -FileName "Gajim-default-$($env:TIME_STRING).exe"
|
- ps: $env:BUILDROOT="C:\msys64\home\appveyor\gajim\win\_build_root"
|
||||||
- ps: Push-AppveyorArtifact Gajim-Portable.exe -FileName "Gajim-portable-default-$($env:TIME_STRING).exe"
|
- ps: Push-AppveyorArtifact "$($env:BUILDROOT)/Gajim.exe" -FileName "Gajim-Master-$($env:TIME_STRING).exe"
|
||||||
|
- ps: Push-AppveyorArtifact "$($env:BUILDROOT)/Gajim-Portable.exe" -FileName "Gajim-Portable-Master-$($env:TIME_STRING).exe"
|
||||||
|
|
||||||
build: off
|
build: off
|
||||||
|
|
||||||
|
# on_finish:
|
||||||
|
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
# FTP deployment provider settings
|
# FTP deployment provider settings
|
||||||
- provider: FTP
|
- provider: FTP
|
||||||
|
|
26
build.bat
|
@ -1,26 +0,0 @@
|
||||||
rmdir /S /Q ..\gajim_built
|
|
||||||
|
|
||||||
xcopy . ..\gajim_built /e /i
|
|
||||||
cd ..
|
|
||||||
cd gajim_built
|
|
||||||
|
|
||||||
xcopy ..\gajim-plugins\plugin_installer plugins\plugin_installer /e /i
|
|
||||||
|
|
||||||
rem copy C:\Python34\Lib\site-packages\gnome\msgfmt.exe gajim_built
|
|
||||||
rem copy C:\Windows\System32\msvcr100.dll gajim_built
|
|
||||||
|
|
||||||
for %%l in (po\*.po) do mkdir po\%%~nl & mkdir po\%%~nl\LC_MESSAGES & msgfmt -o po\%%~nl\LC_MESSAGES\gajim.mo %%l
|
|
||||||
|
|
||||||
"c:\python34\python.exe" setup_win32.py build_exe
|
|
||||||
|
|
||||||
move build\exe.win32-3.4 .
|
|
||||||
rmdir build
|
|
||||||
rename exe.win32-3.4 build
|
|
||||||
|
|
||||||
rem xcopy ..\win32com build\win32com /e /i
|
|
||||||
|
|
||||||
"C:\Program Files (x86)\NSIS\makensis" gajim.nsi
|
|
||||||
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
pause
|
|
|
@ -1,11 +0,0 @@
|
||||||
# Download the file to a specific location
|
|
||||||
$clnt = new-object System.Net.WebClient
|
|
||||||
$url = "https://gajim.org/downloads/snap/win/build/site-packages.zip"
|
|
||||||
$file = "c:\site-packages.zip"
|
|
||||||
$clnt.DownloadFile($url,$file)
|
|
||||||
|
|
||||||
# Unzip the file to specified location
|
|
||||||
$shell_app=new-object -com shell.application
|
|
||||||
$zip_file = $shell_app.namespace($file)
|
|
||||||
$destination = $shell_app.namespace("C:\Python34\Lib\site-packages")
|
|
||||||
$destination.Copyhere($zip_file.items())
|
|
|
@ -1,3 +0,0 @@
|
||||||
cd src
|
|
||||||
python gajim.py
|
|
||||||
cd ..
|
|
|
@ -1,15 +0,0 @@
|
||||||
setuptools
|
|
||||||
git+https://dev.gajim.org/gajim/python-nbxmpp.git
|
|
||||||
protobuf
|
|
||||||
pycryptodome
|
|
||||||
cryptography
|
|
||||||
cx_freeze
|
|
||||||
keyring
|
|
||||||
pypiwin32
|
|
||||||
pyopenssl
|
|
||||||
python-gnupg
|
|
||||||
pillow
|
|
||||||
pycurl
|
|
||||||
docutils
|
|
||||||
qrcode
|
|
||||||
certifi
|
|
137
setup_win32.py
|
@ -1,137 +0,0 @@
|
||||||
# setup_win32.py (run me as python setup_win32.py py2exe -O2)
|
|
||||||
#
|
|
||||||
# Copyright (C) 2003-2014 Yann Leboulanger <asterix AT lagaule.org>
|
|
||||||
# Copyright (C) 2005-2006 Nikos Kouremenos <kourem AT gmail.com>
|
|
||||||
# Copyright (C) 2008 Jonathan Schleifer <js-gajim AT webkeks.org>
|
|
||||||
#
|
|
||||||
# This file is part of Gajim.
|
|
||||||
#
|
|
||||||
# Gajim is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published
|
|
||||||
# by the Free Software Foundation; version 3 only.
|
|
||||||
#
|
|
||||||
# Gajim is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with Gajim. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
import sys
|
|
||||||
import os
|
|
||||||
import site
|
|
||||||
from cx_Freeze import setup, Executable
|
|
||||||
|
|
||||||
SITEDIR = site.getsitepackages()[1]
|
|
||||||
INCLUDE_DLL_PATH = os.path.join(SITEDIR, "gnome")
|
|
||||||
sys.path.append('src')
|
|
||||||
|
|
||||||
# Collect the list of missing dll when cx_freeze builds the app
|
|
||||||
|
|
||||||
MISSING_DLL = ['libgtk-3-0.dll',
|
|
||||||
'libgdk-3-0.dll',
|
|
||||||
'libatk-1.0-0.dll',
|
|
||||||
'libgdk_pixbuf-2.0-0.dll',
|
|
||||||
'libjpeg-8.dll',
|
|
||||||
'libpango-1.0-0.dll',
|
|
||||||
'libpangocairo-1.0-0.dll',
|
|
||||||
'libpangoft2-1.0-0.dll',
|
|
||||||
'libpangowin32-1.0-0.dll',
|
|
||||||
'libgnutls-28.dll',
|
|
||||||
'libp11-kit-0.dll',
|
|
||||||
'libgstrtp-1.0-0.dll',
|
|
||||||
'libgstrtsp-1.0-0.dll',
|
|
||||||
'libgstrtspserver-1.0-0.dll',
|
|
||||||
'libfarstream-0.2-5.dll',
|
|
||||||
'libgstsdp-1.0-0.dll',
|
|
||||||
'libgsttag-1.0-0.dll',
|
|
||||||
'libgssdp-1.0-3.dll',
|
|
||||||
'libgstvideo-1.0-0.dll',
|
|
||||||
'libgstapp-1.0-0.dll',
|
|
||||||
'libgupnp-1.0-4.dll',
|
|
||||||
'libgstaudio-1.0-0.dll',
|
|
||||||
'libgupnp-igd-1.0-4.dll',
|
|
||||||
'libgstbase-1.0-0.dll',
|
|
||||||
'libnice-10.dll',
|
|
||||||
'librsvg-2-2.dll',
|
|
||||||
'libvisual-0.4-0.dll',
|
|
||||||
'libwebp-5.dll',
|
|
||||||
'libgstriff-1.0-0.dll',
|
|
||||||
'libepoxy-0.dll',
|
|
||||||
'libharfbuzz-0.dll',
|
|
||||||
'libtiff-5.dll',
|
|
||||||
'libjasper-1.dll',
|
|
||||||
'libgstpbutils-1.0-0.dll',
|
|
||||||
'liborc-0.4-0.dll',
|
|
||||||
'libgstnet-1.0-0.dll',
|
|
||||||
'libsoup-2.4-1.dll',
|
|
||||||
'liborc-test-0.4-0.dll',
|
|
||||||
'libavcodec-57.dll',
|
|
||||||
'libavutil-55.dll',
|
|
||||||
'libswresample-2.dll',
|
|
||||||
'libavformat-57.dll',
|
|
||||||
'libavfilter-6.dll',
|
|
||||||
'libgssapi-3.dll',
|
|
||||||
'libopenssl.dll',
|
|
||||||
'libsqlite3-0.dll',
|
|
||||||
'libproxy.dll',
|
|
||||||
'libstdc++.dll',
|
|
||||||
'libgstfft-1.0-0.dll']
|
|
||||||
|
|
||||||
|
|
||||||
# We need to add all the libraries too (for themes, etc..)
|
|
||||||
GTK_LIBS = {
|
|
||||||
'etc': ['dbus-1', 'fonts', 'gtk-3.0', 'pango'],
|
|
||||||
'lib': ['farstream-0.2', 'gdbus-2.0',
|
|
||||||
'gdk-pixbuf-2.0', 'gio', 'girepository-1.0',
|
|
||||||
'gstreamer-1.0', 'gtk-3.0'],
|
|
||||||
'share': ['dbus-1', 'farstream', 'fonts',
|
|
||||||
'glib-2.0',
|
|
||||||
'gst-plugins-base', 'gstreamer-1.0', 'gupnp-av',
|
|
||||||
'gupnp-dlna-2.0', 'icons', 'ssl', 'themes', 'xml']
|
|
||||||
}
|
|
||||||
|
|
||||||
# Create the list of includes as cx_freeze likes
|
|
||||||
INCLUDE_FILES = []
|
|
||||||
for dll in MISSING_DLL:
|
|
||||||
INCLUDE_FILES.append((os.path.join(INCLUDE_DLL_PATH, dll), dll))
|
|
||||||
|
|
||||||
# Let's add gtk libraries folders and files
|
|
||||||
for folder in GTK_LIBS:
|
|
||||||
for lib in GTK_LIBS[folder]:
|
|
||||||
folder_lib = os.path.join(folder, lib)
|
|
||||||
INCLUDE_FILES.append((os.path.join(INCLUDE_DLL_PATH, folder_lib),
|
|
||||||
folder_lib))
|
|
||||||
|
|
||||||
#Let's add gtk locales that we support in Gajim
|
|
||||||
for language in next(os.walk('po'))[1]:
|
|
||||||
target_dir = os.path.join('share', 'locale', language)
|
|
||||||
language_dir = os.path.join(INCLUDE_DLL_PATH, target_dir)
|
|
||||||
if os.path.isdir(language_dir):
|
|
||||||
INCLUDE_FILES.append((language_dir, target_dir))
|
|
||||||
|
|
||||||
OPTIONS = {
|
|
||||||
'build_exe': {
|
|
||||||
'includes': ['gi', 'numbers', 'win32com.client', 'win32com.server'],
|
|
||||||
'packages': ['gi', 'cffi', 'cryptography', 'google', 'axolotl',
|
|
||||||
'pkg_resources', 'Crypto', 'pycparser', 'keyring',
|
|
||||||
'PIL', 'idna', 'qrcode', 'certifi'],
|
|
||||||
'include_files': INCLUDE_FILES,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
setup(
|
|
||||||
name='Gajim',
|
|
||||||
version='0.16.10',
|
|
||||||
description='A full featured Jabber client',
|
|
||||||
author='Gajim Development Team',
|
|
||||||
url='http://gajim.org/',
|
|
||||||
download_url='http://gajim.org/downloads.php',
|
|
||||||
license='GPL',
|
|
||||||
options=OPTIONS,
|
|
||||||
executables=[Executable('src/gajim.py', icon='data/pixmaps/gajim.ico',
|
|
||||||
base='Win32GUI')],
|
|
||||||
)
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Windows Installer
|
||||||
|
|
||||||
|
We use [msys2](http://www.msys2.org/) for creating the Windows installer
|
||||||
|
and development on Windows.
|
||||||
|
|
||||||
|
|
||||||
|
### Development
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Download [msys2](http://www.msys2.org/) (msys2-x86_64-xxx.exe) and follow the install instructions on the [msys2](http://www.msys2.org/) startpage (**Important!**)
|
||||||
|
|
||||||
|
* Fork the master branch on dev.gajim.org
|
||||||
|
* Execute ``C:\msys64\mingw32.exe``
|
||||||
|
* Run ``pacman -S git`` to install git
|
||||||
|
* Run ``git clone https://dev.gajim.org/USERNAME/gajim.git``
|
||||||
|
* Run ``cd gajim/win`` to end up where this README exists.
|
||||||
|
* Execute ``./dev_env.sh`` to install all the needed dependencies.
|
||||||
|
* Now go to the git root dir ``cd ..``
|
||||||
|
* Launch Gajim ``./launch.sh``
|
||||||
|
|
||||||
|
|
||||||
|
### Build Gajim / Creating an Installer
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Follow the steps in the Development section, but instead of ``./dev_env.sh`` execute ``./build.sh``.
|
||||||
|
|
||||||
|
You can supply a git tag ``./build.sh [git-tag]``.
|
||||||
|
|
||||||
|
Or dont supply it, then current HEAD is build.
|
||||||
|
|
||||||
|
Both the installer and the portable installer should appear in ``C:\msys64\home\USER\gajim\win\_build_root``.
|
||||||
|
|
|
@ -0,0 +1,321 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Copyright 2016 Christoph Reiter
|
||||||
|
# Copyright 2017 Philipp Hörist
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License version 2 as
|
||||||
|
# published by the Free Software Foundation.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
DIR="$( cd "$( dirname "$0" )" && pwd )"
|
||||||
|
cd "${DIR}"
|
||||||
|
|
||||||
|
# CONFIG START
|
||||||
|
|
||||||
|
ARCH="i686"
|
||||||
|
PYTHON_VERSION="3"
|
||||||
|
BUILD_VERSION="0"
|
||||||
|
|
||||||
|
# CONFIG END
|
||||||
|
|
||||||
|
MISC="${DIR}"/misc
|
||||||
|
PYTHON_ID="python${PYTHON_VERSION}"
|
||||||
|
MINGW="mingw32"
|
||||||
|
|
||||||
|
QL_VERSION="0.0.0"
|
||||||
|
QL_VERSION_DESC="UNKNOWN"
|
||||||
|
|
||||||
|
function set_build_root {
|
||||||
|
BUILD_ROOT="$1"
|
||||||
|
REPO_CLONE="${BUILD_ROOT}/${MINGW}"/gajim
|
||||||
|
MINGW_ROOT="${BUILD_ROOT}/${MINGW}"
|
||||||
|
}
|
||||||
|
|
||||||
|
set_build_root "${DIR}/_build_root"
|
||||||
|
|
||||||
|
function build_pacman {
|
||||||
|
pacman --root "${BUILD_ROOT}" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
function build_pip {
|
||||||
|
"${BUILD_ROOT}"/"${MINGW}"/bin/"${PYTHON_ID}".exe -m pip "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
function build_python {
|
||||||
|
"${BUILD_ROOT}"/"${MINGW}"/bin/"${PYTHON_ID}".exe "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
function build_compileall {
|
||||||
|
build_python -m compileall -b "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_pre_deps {
|
||||||
|
pacman -S --needed --noconfirm p7zip git \
|
||||||
|
mingw-w64-"${ARCH}"-nsis wget intltool mingw-w64-"${ARCH}"-toolchain \
|
||||||
|
mingw-w64-i686-python3
|
||||||
|
}
|
||||||
|
|
||||||
|
function create_root {
|
||||||
|
mkdir -p "${BUILD_ROOT}"
|
||||||
|
|
||||||
|
mkdir -p "${BUILD_ROOT}"/var/lib/pacman
|
||||||
|
mkdir -p "${BUILD_ROOT}"/var/log
|
||||||
|
mkdir -p "${BUILD_ROOT}"/tmp
|
||||||
|
|
||||||
|
build_pacman -Syu
|
||||||
|
build_pacman --noconfirm -S base
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_deps {
|
||||||
|
build_pacman --noconfirm -S mingw-w64-"${ARCH}"-gtk3 mingw-w64-"${ARCH}"-"${PYTHON_ID}" \
|
||||||
|
mingw-w64-"${ARCH}"-"${PYTHON_ID}"-gobject \
|
||||||
|
mingw-w64-"${ARCH}"-"${PYTHON_ID}"-pip \
|
||||||
|
mingw-w64-"${ARCH}"-gstreamer \
|
||||||
|
mingw-w64-"${ARCH}"-adwaita-icon-theme
|
||||||
|
|
||||||
|
build_pip install setuptools_scm
|
||||||
|
|
||||||
|
PIP_REQUIREMENTS="\
|
||||||
|
pyasn1
|
||||||
|
certifi
|
||||||
|
git+https://dev.gajim.org/gajim/python-nbxmpp.git
|
||||||
|
protobuf
|
||||||
|
git+https://github.com/dlitz/pycrypto.git
|
||||||
|
cryptography
|
||||||
|
pyopenssl
|
||||||
|
python-gnupg
|
||||||
|
docutils
|
||||||
|
qrcode
|
||||||
|
keyring
|
||||||
|
"
|
||||||
|
|
||||||
|
build_pip install --no-binary ":all:" \
|
||||||
|
--force-reinstall $(echo "$PIP_REQUIREMENTS" | tr ["\\n"] [" "])
|
||||||
|
build_pip install python-axolotl
|
||||||
|
|
||||||
|
build_pacman --noconfirm -Rdd mingw-w64-"${ARCH}"-shared-mime-info \
|
||||||
|
mingw-w64-"${ARCH}"-"${PYTHON_ID}"-pip mingw-w64-"${ARCH}"-ncurses || true
|
||||||
|
build_pacman --noconfirm -Rdd mingw-w64-"${ARCH}"-tk || true
|
||||||
|
build_pacman --noconfirm -Rdd mingw-w64-"${ARCH}"-tcl || true
|
||||||
|
build_pacman --noconfirm -Rdd mingw-w64-"${ARCH}"-gnome-common || true
|
||||||
|
build_pacman --noconfirm -Rdd mingw-w64-"${ARCH}"-gsl || true
|
||||||
|
build_pacman --noconfirm -Rdd mingw-w64-"${ARCH}"-libvpx || true
|
||||||
|
|
||||||
|
# remove the large png icons, they should be used rarely and svg works fine
|
||||||
|
rm -Rf "${MINGW_ROOT}/share/icons/Adwaita/512x512"
|
||||||
|
rm -Rf "${MINGW_ROOT}/share/icons/Adwaita/256x256"
|
||||||
|
rm -Rf "${MINGW_ROOT}/share/icons/Adwaita/96x96"
|
||||||
|
rm -Rf "${MINGW_ROOT}/share/icons/Adwaita/64x64"
|
||||||
|
rm -Rf "${MINGW_ROOT}/share/icons/Adwaita/48x48"
|
||||||
|
"${MINGW_ROOT}"/bin/gtk-update-icon-cache-3.0.exe --force \
|
||||||
|
"${MINGW_ROOT}/share/icons/Adwaita"
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function install_gajim {
|
||||||
|
[ -z "$1" ] && (echo "Missing arg"; exit 1)
|
||||||
|
|
||||||
|
rm -Rf "${REPO_CLONE}"
|
||||||
|
git clone "${DIR}"/.. "${REPO_CLONE}"
|
||||||
|
|
||||||
|
(cd "${REPO_CLONE}" && git checkout "$1") || exit 1
|
||||||
|
|
||||||
|
if [ "$1" = "master" ]
|
||||||
|
then
|
||||||
|
local GIT_REV=$(git rev-list --count HEAD)
|
||||||
|
local GIT_HASH=$(git rev-parse --short HEAD)
|
||||||
|
QL_VERSION_DESC="QL_VERSION-rev$GIT_REV-$GIT_HASH"
|
||||||
|
else
|
||||||
|
QL_VERSION_DESC=$1
|
||||||
|
QL_VERSION=$1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create launchers
|
||||||
|
build_python "${MISC}"/create-launcher.py \
|
||||||
|
"${QL_VERSION}" "${MINGW_ROOT}"/bin
|
||||||
|
|
||||||
|
# Install plugin installer
|
||||||
|
wget -P "${REPO_CLONE}/plugins" -c https://ftp.gajim.org/plugins_1/plugin_installer.zip
|
||||||
|
7z x -o"${REPO_CLONE}"/plugins "${REPO_CLONE}"/plugins/plugin_installer.zip
|
||||||
|
rm -f "${REPO_CLONE}"/plugins/plugin_installer.zip
|
||||||
|
|
||||||
|
# Install themes
|
||||||
|
rm -Rf "${MINGW_ROOT}"/etc
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/themes
|
||||||
|
mv "${REPO_CLONE}"/win/etc "${MINGW_ROOT}"
|
||||||
|
mv "${REPO_CLONE}"/win/themes "${MINGW_ROOT}"/share
|
||||||
|
|
||||||
|
# Install our own icons
|
||||||
|
rm -Rf "${MINGW_ROOT}/share/icons/hicolor"
|
||||||
|
mv "${REPO_CLONE}"/icons/hicolor "${MINGW_ROOT}"/share/icons
|
||||||
|
|
||||||
|
# we installed our app icons into hicolor
|
||||||
|
"${MINGW_ROOT}"/bin/gtk-update-icon-cache-3.0.exe --force \
|
||||||
|
"${MINGW_ROOT}/share/icons/hicolor"
|
||||||
|
|
||||||
|
# Create translation files
|
||||||
|
for f in "${REPO_CLONE}"/po/*.po; do
|
||||||
|
fullfilename=$(basename "$f")
|
||||||
|
filename="${fullfilename%.*}"
|
||||||
|
directory="${MINGW_ROOT}"/share/locale/"$filename"
|
||||||
|
if [ ! -d "$directory" ]; then
|
||||||
|
printf "create dir\n"
|
||||||
|
mkdir -p "${directory}"/LC_MESSAGES
|
||||||
|
fi
|
||||||
|
printf "compile $filename\n"
|
||||||
|
msgfmt -o "${directory}"/LC_MESSAGES/gajim.mo "$f"
|
||||||
|
done
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function cleanup_install {
|
||||||
|
#delete translations we don't support
|
||||||
|
for d in "${MINGW_ROOT}"/share/locale/*/LC_MESSAGES; do
|
||||||
|
if [ ! -f "${d}"/gajim.mo ]; then
|
||||||
|
rm -Rf "${d}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
find "${MINGW_ROOT}" -regextype "posix-extended" -name "*.exe" -a ! \
|
||||||
|
-iregex ".*/(gajim|python|history_manager)[^/]*\\.exe" \
|
||||||
|
-exec rm -f {} \;
|
||||||
|
|
||||||
|
rm -Rf "${REPO_CLONE}"/.git
|
||||||
|
rm -Rf "${REPO_CLONE}"/debian
|
||||||
|
rm -Rf "${REPO_CLONE}"/doc
|
||||||
|
rm -Rf "${REPO_CLONE}"/m4
|
||||||
|
rm -Rf "${REPO_CLONE}"/scripts
|
||||||
|
rm -Rf "${REPO_CLONE}"/test
|
||||||
|
rm -Rf "${REPO_CLONE}"/win
|
||||||
|
rm -Rf "${REPO_CLONE}"/icons
|
||||||
|
rm -Rf "${REPO_CLONE}"/po
|
||||||
|
rm -Rf "${REPO_CLONE}"/plugins/acronyms_expander
|
||||||
|
rm -Rf "${REPO_CLONE}"/plugins/dbus_plugin
|
||||||
|
rm -Rf "${REPO_CLONE}"/plugins/events_dump
|
||||||
|
rm -Rf "${REPO_CLONE}"/plugins/new_events_example
|
||||||
|
rm -Rf "${REPO_CLONE}"/plugins/roster_buttons
|
||||||
|
|
||||||
|
find "${REPO_CLONE}"/* -maxdepth 0 -type f ! -regex ".*/\(AUTHORS\|COPYING\|THANKS\|THANKS.artists\)" -exec rm -f {} \;
|
||||||
|
find "${REPO_CLONE}"/data/* -maxdepth 0 -type f -exec rm -f {} \;
|
||||||
|
|
||||||
|
rm -Rf "${MINGW_ROOT}"/libexec
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/gtk-doc
|
||||||
|
rm -Rf "${MINGW_ROOT}"/include
|
||||||
|
rm -Rf "${MINGW_ROOT}"/var
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/zsh
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/pixmaps
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/gnome-shell
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/dbus-1
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/gir-1.0
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/doc
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/man
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/info
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/mime
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/gettext
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/libtool
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/licenses
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/appdata
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/aclocal
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/ffmpeg
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/vala
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/readline
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/xml
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/bash-completion
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/common-lisp
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/emacs
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/gdb
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/libcaca
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/gettext
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/gst-plugins-base
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/gtk-3.0
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/nghttp2
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/fontconfig
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/gettext-*
|
||||||
|
rm -Rf "${MINGW_ROOT}"/share/gstreamer-1.0
|
||||||
|
|
||||||
|
find "${MINGW_ROOT}"/share/glib-2.0 -type f ! \
|
||||||
|
-name "*.compiled" -exec rm -f {} \;
|
||||||
|
|
||||||
|
rm -Rf "${MINGW_ROOT}"/lib/"${PYTHON_ID}".*/test
|
||||||
|
rm -Rf "${MINGW_ROOT}"/lib/cmake
|
||||||
|
rm -Rf "${MINGW_ROOT}"/lib/gettext
|
||||||
|
rm -Rf "${MINGW_ROOT}"/lib/gtk-3.0
|
||||||
|
rm -Rf "${MINGW_ROOT}"/lib/mpg123
|
||||||
|
rm -Rf "${MINGW_ROOT}"/lib/p11-kit
|
||||||
|
rm -Rf "${MINGW_ROOT}"/lib/ruby
|
||||||
|
rm -Rf "${MINGW_ROOT}"/lib/tcl8
|
||||||
|
rm -Rf "${MINGW_ROOT}"/lib/tcl8.6
|
||||||
|
|
||||||
|
|
||||||
|
rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstvpx.dll
|
||||||
|
rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstdaala.dll
|
||||||
|
rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstdvdread.dll
|
||||||
|
rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstopenal.dll
|
||||||
|
rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstopenexr.dll
|
||||||
|
rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstopenh264.dll
|
||||||
|
rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstresindvd.dll
|
||||||
|
rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstassrender.dll
|
||||||
|
rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstx265.dll
|
||||||
|
rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstwebp.dll
|
||||||
|
rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstopengl.dll
|
||||||
|
rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstmxf.dll
|
||||||
|
rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstfaac.dll
|
||||||
|
rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstschro.dll
|
||||||
|
|
||||||
|
rm -f "${MINGW_ROOT}"/bin/libharfbuzz-icu-0.dll
|
||||||
|
rm -f "${MINGW_ROOT}"/lib/"${PYTHON_ID}".*/lib-dynload/_tkinter*
|
||||||
|
rm -f "${MINGW_ROOT}"/lib/gstreamer-1.0/libgstcacasink.dll
|
||||||
|
|
||||||
|
rm -Rf "${MINGW_ROOT}"/lib/python2.*
|
||||||
|
|
||||||
|
find "${MINGW_ROOT}" -name "*.a" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -name "*.whl" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -name "*.h" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -name "*.la" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -name "*.sh" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -name "*.jar" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -name "*.def" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -name "*.cmd" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -name "*.cmake" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -name "*.pc" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -name "*.desktop" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -name "*.manifest" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -name "*.pyo" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -name "*.am" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -name ".gitignore" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -name "pylint.rc" -exec rm -f {} \;
|
||||||
|
|
||||||
|
find "${MINGW_ROOT}"/bin -name "*-config" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}"/bin -name "easy_install*" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -regex ".*/bin/[^.]+" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -regex ".*/bin/[^.]+\\.[0-9]+" -exec rm -f {} \;
|
||||||
|
|
||||||
|
find "${MINGW_ROOT}" -name "gtk30-properties.mo" -exec rm -rf {} \;
|
||||||
|
find "${MINGW_ROOT}" -name "gettext-tools.mo" -exec rm -rf {} \;
|
||||||
|
|
||||||
|
find "${MINGW_ROOT}" -name "old_root.pem" -exec rm -rf {} \;
|
||||||
|
find "${MINGW_ROOT}" -name "weak.pem" -exec rm -rf {} \;
|
||||||
|
|
||||||
|
find "${MINGW_ROOT}"/lib/"${PYTHON_ID}".* -type d -name "test*" \
|
||||||
|
-prune -exec rm -rf {} \;
|
||||||
|
|
||||||
|
find "${MINGW_ROOT}"/lib/"${PYTHON_ID}".* -type d -name "*_test*" \
|
||||||
|
-prune -exec rm -rf {} \;
|
||||||
|
|
||||||
|
find "${MINGW_ROOT}"/bin -name "*.pyo" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}"/bin -name "*.pyc" -exec rm -f {} \;
|
||||||
|
build_compileall -q "${MINGW_ROOT}"
|
||||||
|
find "${MINGW_ROOT}" -name "*.py" ! -name "gajim.py" ! -name "history_manager.py" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}"/bin -name "*.pyc" -exec rm -f {} \;
|
||||||
|
find "${MINGW_ROOT}" -type d -name "__pycache__" -prune -exec rm -rf {} \;
|
||||||
|
|
||||||
|
build_python "${MISC}/depcheck.py"
|
||||||
|
|
||||||
|
find "${MINGW_ROOT}" -type d -empty -delete
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function build_installer {
|
||||||
|
(cd "$BUILD_ROOT" && makensis -NOCD -DVERSION="$QL_VERSION_DESC" "${MISC}"/gajim.nsi)
|
||||||
|
(cd "$BUILD_ROOT" && makensis -NOCD -DVERSION="$QL_VERSION_DESC" "${MISC}"/gajim-portable.nsi)
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Copyright 2016 Christoph Reiter
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
DIR="$( cd "$( dirname "$0" )" && pwd )"
|
||||||
|
source "$DIR"/_base.sh
|
||||||
|
|
||||||
|
function main {
|
||||||
|
local GIT_TAG=${1:-"master"}
|
||||||
|
|
||||||
|
[[ -d "${BUILD_ROOT}" ]] && (echo "${BUILD_ROOT} already exists"; exit 1)
|
||||||
|
|
||||||
|
# started from the wrong env -> switch
|
||||||
|
if [ $(echo "$MSYSTEM" | tr '[A-Z]' '[a-z]') != "$MINGW" ]; then
|
||||||
|
"/${MINGW}.exe" "$0"
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
install_pre_deps
|
||||||
|
create_root
|
||||||
|
install_deps
|
||||||
|
install_gajim "$GIT_TAG"
|
||||||
|
cleanup_install
|
||||||
|
build_installer
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@";
|
|
@ -0,0 +1,41 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
function main {
|
||||||
|
pacman --noconfirm -S --needed \
|
||||||
|
git \
|
||||||
|
mingw-w64-i686-toolchain \
|
||||||
|
mingw-w64-i686-gdk-pixbuf2 \
|
||||||
|
mingw-w64-i686-gtk3 \
|
||||||
|
mingw-w64-i686-gstreamer \
|
||||||
|
intltool \
|
||||||
|
mingw-w64-i686-sqlite3 \
|
||||||
|
mingw-w64-i686-python3 \
|
||||||
|
mingw-w64-i686-python3-gobject \
|
||||||
|
mingw-w64-i686-python3-pip
|
||||||
|
|
||||||
|
pip3 install setuptools_scm
|
||||||
|
|
||||||
|
PIP_REQUIREMENTS="\
|
||||||
|
pyasn1
|
||||||
|
certifi
|
||||||
|
git+https://dev.gajim.org/gajim/python-nbxmpp.git
|
||||||
|
protobuf
|
||||||
|
git+https://github.com/dlitz/pycrypto.git
|
||||||
|
cryptography
|
||||||
|
pyopenssl
|
||||||
|
python-gnupg
|
||||||
|
docutils
|
||||||
|
qrcode
|
||||||
|
keyring
|
||||||
|
"
|
||||||
|
|
||||||
|
pip3 install --no-binary ":all:" \
|
||||||
|
--force-reinstall $(echo "$PIP_REQUIREMENTS" | tr ["\\n"] [" "])
|
||||||
|
|
||||||
|
pip3 install python-axolotl
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
main;
|
|
@ -0,0 +1,2 @@
|
||||||
|
[Settings]
|
||||||
|
gtk-theme-name=VimixLight
|
|
@ -0,0 +1,204 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright 2016 Christoph Reiter
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
"""Creates simple Python .exe launchers for gui and cli apps
|
||||||
|
|
||||||
|
./create-launcher.py "3.8.0" <target-dir>
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import subprocess
|
||||||
|
import shlex
|
||||||
|
import tempfile
|
||||||
|
import shutil
|
||||||
|
import struct
|
||||||
|
from distutils.spawn import find_executable
|
||||||
|
|
||||||
|
|
||||||
|
def build_resource(rc_path, out_path):
|
||||||
|
"""Raises subprocess.CalledProcessError"""
|
||||||
|
|
||||||
|
def is_64bit():
|
||||||
|
return struct.calcsize("P") == 8
|
||||||
|
|
||||||
|
subprocess.check_call(
|
||||||
|
["windres", "-O", "coff", "-F",
|
||||||
|
"pe-x86-64" if is_64bit() else "pe-i386", rc_path,
|
||||||
|
"-o", out_path])
|
||||||
|
|
||||||
|
|
||||||
|
def get_build_args():
|
||||||
|
python_name = os.path.splitext(os.path.basename(sys.executable))[0]
|
||||||
|
python_config = os.path.join(
|
||||||
|
os.path.dirname(sys.executable), python_name + "-config")
|
||||||
|
|
||||||
|
cflags = subprocess.check_output(
|
||||||
|
["sh", python_config, "--cflags"]).strip()
|
||||||
|
libs = subprocess.check_output(
|
||||||
|
["sh", python_config, "--libs"]).strip()
|
||||||
|
|
||||||
|
cflags = os.fsdecode(cflags)
|
||||||
|
libs = os.fsdecode(libs)
|
||||||
|
return shlex.split(cflags) + shlex.split(libs)
|
||||||
|
|
||||||
|
|
||||||
|
def build_exe(source_path, resource_path, is_gui, out_path):
|
||||||
|
args = ["gcc", "-s"]
|
||||||
|
if is_gui:
|
||||||
|
args.append("-mwindows")
|
||||||
|
args.extend(["-o", out_path, source_path, resource_path])
|
||||||
|
args.extend(get_build_args())
|
||||||
|
subprocess.check_call(args)
|
||||||
|
|
||||||
|
|
||||||
|
def get_launcher_code(entry_point):
|
||||||
|
template = """\
|
||||||
|
#include "Python.h"
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#include <windows.h>
|
||||||
|
#include <shellapi.h>
|
||||||
|
|
||||||
|
|
||||||
|
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
|
||||||
|
LPSTR lpCmdLine, int nCmdShow)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
LPWSTR *szArglist;
|
||||||
|
int nArgs;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
|
||||||
|
if( NULL == szArglist )
|
||||||
|
{
|
||||||
|
printf("CommandLineToArgvW failed");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Py_NoUserSiteDirectory = 1;
|
||||||
|
Py_IgnoreEnvironmentFlag = 1;
|
||||||
|
Py_DontWriteBytecodeFlag = 1;
|
||||||
|
Py_FrozenFlag = 1;
|
||||||
|
Py_Initialize();
|
||||||
|
PySys_SetArgvEx(__argc, szArglist, 0);
|
||||||
|
FILE* file = fopen("../gajim/src/%(filename)s", "r");
|
||||||
|
PyRun_SimpleString("import sys; import os;"
|
||||||
|
"os.chdir('../gajim/src');"
|
||||||
|
"sys.path.append(os.getcwd());"
|
||||||
|
"sys.frozen=True;"
|
||||||
|
);
|
||||||
|
result = PyRun_SimpleFile(file, "../gajim/src/%(filename)s");
|
||||||
|
Py_Finalize();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
|
||||||
|
return template % {"filename": entry_point}
|
||||||
|
|
||||||
|
|
||||||
|
def get_resouce_code(filename, file_version, file_desc, icon_path,
|
||||||
|
product_name, product_version, company_name):
|
||||||
|
|
||||||
|
template = """\
|
||||||
|
1 ICON "%(icon_path)s"
|
||||||
|
1 VERSIONINFO
|
||||||
|
FILEVERSION %(file_version_list)s
|
||||||
|
PRODUCTVERSION %(product_version_list)s
|
||||||
|
FILEOS 0x4
|
||||||
|
FILETYPE 0x1
|
||||||
|
BEGIN
|
||||||
|
BLOCK "StringFileInfo"
|
||||||
|
BEGIN
|
||||||
|
BLOCK "040904E4"
|
||||||
|
BEGIN
|
||||||
|
VALUE "CompanyName", "%(company_name)s"
|
||||||
|
VALUE "FileDescription", "%(file_desc)s"
|
||||||
|
VALUE "FileVersion", "%(file_version)s"
|
||||||
|
VALUE "InternalName", "%(internal_name)s"
|
||||||
|
VALUE "OriginalFilename", "%(filename)s"
|
||||||
|
VALUE "ProductName", "%(product_name)s"
|
||||||
|
VALUE "ProductVersion", "%(product_version)s"
|
||||||
|
END
|
||||||
|
END
|
||||||
|
BLOCK "VarFileInfo"
|
||||||
|
BEGIN
|
||||||
|
VALUE "Translation", 0x409, 1252
|
||||||
|
END
|
||||||
|
END
|
||||||
|
"""
|
||||||
|
|
||||||
|
def to_ver_list(v):
|
||||||
|
return ",".join(map(str, (list(map(int, v.split("."))) + [0] * 4)[:4]))
|
||||||
|
|
||||||
|
file_version_list = to_ver_list(file_version)
|
||||||
|
product_version_list = to_ver_list(product_version)
|
||||||
|
|
||||||
|
return template % {
|
||||||
|
"icon_path": icon_path, "file_version_list": file_version_list,
|
||||||
|
"product_version_list": product_version_list,
|
||||||
|
"file_version": file_version, "product_version": product_version,
|
||||||
|
"company_name": company_name, "filename": filename,
|
||||||
|
"internal_name": os.path.splitext(filename)[0],
|
||||||
|
"product_name": product_name, "file_desc": file_desc,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def build_launcher(out_path, icon_path, file_desc, product_name, product_version,
|
||||||
|
company_name, entry_point, is_gui):
|
||||||
|
|
||||||
|
src_ico = os.path.abspath(icon_path)
|
||||||
|
target = os.path.abspath(out_path)
|
||||||
|
|
||||||
|
file_version = product_version
|
||||||
|
|
||||||
|
dir_ = os.getcwd()
|
||||||
|
temp = tempfile.mkdtemp()
|
||||||
|
try:
|
||||||
|
os.chdir(temp)
|
||||||
|
with open("launcher.c", "w") as h:
|
||||||
|
h.write(get_launcher_code(entry_point))
|
||||||
|
shutil.copyfile(src_ico, "launcher.ico")
|
||||||
|
with open("launcher.rc", "w") as h:
|
||||||
|
h.write(get_resouce_code(
|
||||||
|
os.path.basename(target), file_version, file_desc,
|
||||||
|
"launcher.ico", product_name, product_version, company_name))
|
||||||
|
|
||||||
|
build_resource("launcher.rc", "launcher.res")
|
||||||
|
build_exe("launcher.c", "launcher.res", is_gui, target)
|
||||||
|
finally:
|
||||||
|
os.chdir(dir_)
|
||||||
|
shutil.rmtree(temp)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
argv = sys.argv
|
||||||
|
|
||||||
|
version = argv[1]
|
||||||
|
target = argv[2]
|
||||||
|
|
||||||
|
company_name = "Gajim"
|
||||||
|
misc = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
|
||||||
|
build_launcher(
|
||||||
|
os.path.join(target, "Gajim.exe"),
|
||||||
|
os.path.join(misc, "gajim.ico"), "Gajim", "Gajim",
|
||||||
|
version, company_name, 'gajim.py', True)
|
||||||
|
|
||||||
|
build_launcher(
|
||||||
|
os.path.join(target, "Gajim-Debug.exe"),
|
||||||
|
os.path.join(misc, "gajim.ico"), "Gajim", "Gajim",
|
||||||
|
version, company_name, 'gajim.py', False)
|
||||||
|
|
||||||
|
build_launcher(
|
||||||
|
os.path.join(target, "history_manager.exe"),
|
||||||
|
os.path.join(misc, "gajim.ico"), "History Manager", "History Manager",
|
||||||
|
version, company_name, 'history_manager.py', True)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
|
@ -0,0 +1,104 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Copyright 2016 Christoph Reiter
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
"""
|
||||||
|
Deletes unneeded DLLs and checks DLL dependencies.
|
||||||
|
Execute with the build python, will figure out the rest.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import subprocess
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
import gi
|
||||||
|
gi.require_version("GIRepository", "2.0")
|
||||||
|
from gi.repository import GIRepository
|
||||||
|
|
||||||
|
|
||||||
|
def get_required_by_typelibs():
|
||||||
|
deps = set()
|
||||||
|
repo = GIRepository.Repository()
|
||||||
|
for tl in os.listdir(repo.get_search_path()[0]):
|
||||||
|
namespace, version = os.path.splitext(tl)[0].split("-", 1)
|
||||||
|
repo.require(namespace, version, 0)
|
||||||
|
lib = repo.get_shared_library(namespace)
|
||||||
|
if lib:
|
||||||
|
deps.update(lib.split(","))
|
||||||
|
return deps
|
||||||
|
|
||||||
|
|
||||||
|
EXTENSIONS = [".exe", ".pyd", ".dll"]
|
||||||
|
SYSTEM_LIBS = ['advapi32.dll',
|
||||||
|
"cabinet.dll", "comctl32.dll", "comdlg32.dll", "crypt32.dll", "d3d9.dll",
|
||||||
|
"dnsapi.dll", "dsound.dll", "dwmapi.dll", "gdi32.dll", "imm32.dll",
|
||||||
|
"iphlpapi.dll", "kernel32.dll", "ksuser.dll", "msi.dll", "msimg32.dll",
|
||||||
|
"msvcr71.dll", "msvcr80.dll", "msvcrt.dll", "ole32.dll", "oleaut32.dll",
|
||||||
|
"opengl32.dll", "rpcrt4.dll", "setupapi.dll", "shell32.dll", "user32.dll",
|
||||||
|
"usp10.dll", "winmm.dll", "winspool.drv", "wldap32.dll", "ws2_32.dll",
|
||||||
|
"wsock32.dll", "shlwapi.dll"
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def get_dependencies(filename):
|
||||||
|
deps = []
|
||||||
|
data = subprocess.check_output(["objdump", "-p", filename])
|
||||||
|
data = data.decode("utf-8")
|
||||||
|
for line in data.splitlines():
|
||||||
|
line = line.strip()
|
||||||
|
if line.startswith("DLL Name:"):
|
||||||
|
deps.append(line.split(":", 1)[-1].strip().lower())
|
||||||
|
return deps
|
||||||
|
|
||||||
|
|
||||||
|
def find_lib(root, name):
|
||||||
|
search_path = os.path.join(root, "bin")
|
||||||
|
if os.path.exists(os.path.join(search_path, name)):
|
||||||
|
return os.path.join(search_path, name)
|
||||||
|
elif name in SYSTEM_LIBS:
|
||||||
|
return name
|
||||||
|
|
||||||
|
|
||||||
|
def get_things_to_delete(root):
|
||||||
|
all_libs = set()
|
||||||
|
needed = set()
|
||||||
|
for base, dirs, files in os.walk(root):
|
||||||
|
for f in files:
|
||||||
|
path = os.path.join(base, f)
|
||||||
|
if os.path.splitext(path)[-1].lower() in EXTENSIONS:
|
||||||
|
all_libs.add(f.lower())
|
||||||
|
for lib in get_dependencies(path):
|
||||||
|
all_libs.add(lib)
|
||||||
|
needed.add(lib)
|
||||||
|
if not find_lib(root, lib):
|
||||||
|
print("MISSING:", path, lib)
|
||||||
|
|
||||||
|
for lib in get_required_by_typelibs():
|
||||||
|
needed.add(lib)
|
||||||
|
if not find_lib(root, lib):
|
||||||
|
print("MISSING:", path, lib)
|
||||||
|
|
||||||
|
# get rid of things not in the search path,
|
||||||
|
# maybe loaded through other means?
|
||||||
|
not_needed = filter(
|
||||||
|
lambda l: find_lib(root, l) and \
|
||||||
|
os.path.splitext(l)[-1].lower() != ".exe", all_libs - needed)
|
||||||
|
|
||||||
|
return [find_lib(root, l) for l in not_needed]
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
libs = get_things_to_delete(sys.prefix)
|
||||||
|
while libs:
|
||||||
|
for l in libs:
|
||||||
|
print("DELETE:", l)
|
||||||
|
os.unlink(l)
|
||||||
|
libs = get_things_to_delete(sys.prefix)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
|
@ -6,6 +6,7 @@ Unicode true
|
||||||
Name "Gajim"
|
Name "Gajim"
|
||||||
OutFile "Gajim-Portable.exe"
|
OutFile "Gajim-Portable.exe"
|
||||||
SetCompressor /final /solid lzma
|
SetCompressor /final /solid lzma
|
||||||
|
SetCompressorDictSize 32
|
||||||
|
|
||||||
!define myAppName "Gajim"
|
!define myAppName "Gajim"
|
||||||
|
|
||||||
|
@ -14,14 +15,14 @@ RequestExecutionLevel user
|
||||||
|
|
||||||
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
|
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
|
||||||
!define MUI_HEADERIMAGE
|
!define MUI_HEADERIMAGE
|
||||||
!define MUI_HEADERIMAGE_BITMAP "data\pixmaps\nsis_header.bmp"
|
!define MUI_HEADERIMAGE_BITMAP "mingw32\gajim\data\pixmaps\nsis_header.bmp"
|
||||||
!define MUI_WELCOMEFINISHPAGE_BITMAP "data\pixmaps\nsis_wizard.bmp"
|
!define MUI_WELCOMEFINISHPAGE_BITMAP "mingw32\gajim\data\pixmaps\nsis_wizard.bmp"
|
||||||
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "data\pixmaps\nsis_wizard.bmp"
|
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "mingw32\gajim\data\pixmaps\nsis_wizard.bmp"
|
||||||
!define MUI_COMPONENTSPAGE_SMALLDESC
|
!define MUI_COMPONENTSPAGE_SMALLDESC
|
||||||
!define MUI_ABORTWARNING
|
!define MUI_ABORTWARNING
|
||||||
|
|
||||||
!insertmacro MUI_PAGE_WELCOME
|
!insertmacro MUI_PAGE_WELCOME
|
||||||
!insertmacro MUI_PAGE_LICENSE "COPYING"
|
!insertmacro MUI_PAGE_LICENSE "mingw32\gajim\COPYING"
|
||||||
!insertmacro MUI_PAGE_COMPONENTS
|
!insertmacro MUI_PAGE_COMPONENTS
|
||||||
!insertmacro MUI_PAGE_DIRECTORY
|
!insertmacro MUI_PAGE_DIRECTORY
|
||||||
!insertmacro MUI_PAGE_INSTFILES
|
!insertmacro MUI_PAGE_INSTFILES
|
||||||
|
@ -100,163 +101,16 @@ Section "Gajim" SecGajim
|
||||||
SectionIn RO
|
SectionIn RO
|
||||||
|
|
||||||
SetOutPath "$INSTDIR"
|
SetOutPath "$INSTDIR"
|
||||||
File "AUTHORS"
|
File /r "mingw32\*.*"
|
||||||
File "COPYING"
|
|
||||||
File "THANKS"
|
|
||||||
File "THANKS.artists"
|
|
||||||
File /r "build"
|
|
||||||
|
|
||||||
SetOutPath "$INSTDIR\data"
|
SetOutPath "$INSTDIR\bin"
|
||||||
File /r "data\gui"
|
CreateShortCut "$INSTDIR\Gajim-Portable.lnk" "$INSTDIR\bin\Gajim.exe" \
|
||||||
File /r "data\moods"
|
"-c ..\..\UserData" "" "" SW_SHOWNORMAL "" "Gajim Portable"
|
||||||
File /r "data\activities"
|
CreateShortCut "$INSTDIR\Gajim-Portable-Debug.lnk" "$INSTDIR\bin\Gajim-Debug.exe" \
|
||||||
File /r "data\other"
|
"-c ..\..\UserData" "" "" SW_SHOWNORMAL "" "Gajim Portable Debug"
|
||||||
File /r "data\pixmaps"
|
|
||||||
File /r "data\sounds"
|
|
||||||
|
|
||||||
SetOutPath "$INSTDIR\icons"
|
|
||||||
File /r "icons\hicolor"
|
|
||||||
|
|
||||||
SetOutPath "$INSTDIR\build"
|
|
||||||
CreateShortCut "$INSTDIR\Gajim-Portable.lnk" "$INSTDIR\build\Gajim.exe" \
|
|
||||||
"-c ..\UserData" "" "" SW_SHOWNORMAL "" "Gajim Portable"
|
|
||||||
|
|
||||||
SectionEnd
|
SectionEnd
|
||||||
|
|
||||||
Section "Plugins" SecPlugins
|
|
||||||
SetOutPath "$INSTDIR\plugins"
|
|
||||||
File /r "plugins\plugin_installer"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
SectionGroup $(NAME_Emoticons)
|
|
||||||
|
|
||||||
Section "animated" SecEmoticonsAnimated
|
|
||||||
SetOutPath "$INSTDIR\data\emoticons"
|
|
||||||
File /r "data\emoticons\animated"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "static" SecEmoticonsStatic
|
|
||||||
SectionIn RO
|
|
||||||
SetOutPath "$INSTDIR\data\emoticons"
|
|
||||||
File /r "data\emoticons\static"
|
|
||||||
SectioNEnd
|
|
||||||
|
|
||||||
Section "static-big" SecEmoticonsStaticBig
|
|
||||||
SetOutPath "$INSTDIR\data\emoticons"
|
|
||||||
File /r "data\emoticons\static-big"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
SectionGroupEnd
|
|
||||||
|
|
||||||
SectionGroup $(NAME_Iconsets)
|
|
||||||
|
|
||||||
Section "dcraven" SecIconsetsDcraven
|
|
||||||
SectionIn RO
|
|
||||||
SetOutPath "$INSTDIR\data\iconsets"
|
|
||||||
File /r "data\iconsets\dcraven"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "gnome" SecIconsetsGnome
|
|
||||||
SetOutPath "$INSTDIR\data\iconsets"
|
|
||||||
File /r "data\iconsets\gnome"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "goojim" SecIconsetsGoojim
|
|
||||||
SetOutPath "$INSTDIR\data\iconsets"
|
|
||||||
File /r "data\iconsets\goojim"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "gota" SecIconsetsGota
|
|
||||||
SetOutPath "$INSTDIR\data\iconsets"
|
|
||||||
File /r "data\iconsets\gota"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "jabberbulb" SecIconsetsJabberbulb
|
|
||||||
SetOutPath "$INSTDIR\data\iconsets"
|
|
||||||
File /r "data\iconsets\jabberbulb"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "sun" SecIconsetsSun
|
|
||||||
SetOutPath "$INSTDIR\data\iconsets"
|
|
||||||
File /r "data\iconsets\sun"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "wroop" SecIconsetsWroop
|
|
||||||
SetOutPath "$INSTDIR\data\iconsets"
|
|
||||||
File /r "data\iconsets\wroop"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "transports" SecIconsetsTransports
|
|
||||||
SetOutPath "$INSTDIR\data\iconsets"
|
|
||||||
File /r "data\iconsets\transports"
|
|
||||||
SectionIn Ro
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
SectionGroupEnd
|
|
||||||
|
|
||||||
SectionGroup $(NAME_Languages)
|
|
||||||
|
|
||||||
Section "English (UK)" SecLanguagesEnglishUK
|
|
||||||
SetOutPath "$INSTDIR\po"
|
|
||||||
File /r "po\en_GB"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "French" SecLanguagesFrench
|
|
||||||
SetOutPath "$INSTDIR\po"
|
|
||||||
File /r "po\fr"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "German" SecLanguagesGerman
|
|
||||||
SetOutPath "$INSTDIR\po"
|
|
||||||
File /r "po\de"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "Italian" SecLanguagesItalian
|
|
||||||
SetOutPath "$INSTDIR\po"
|
|
||||||
File /r "po\it"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "Spanish" SecLanguagesSpanish
|
|
||||||
SetOutPath "$INSTDIR\po"
|
|
||||||
File /r "po\es"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "Russian" SecLanguagesRussian
|
|
||||||
SetOutPath "$INSTDIR\po"
|
|
||||||
File /r "po\ru"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section $(NAME_SecLanguagesOther) SecLanguagesOther
|
|
||||||
SetOutPath "$INSTDIR\po"
|
|
||||||
File /r "po\be"
|
|
||||||
File /r "po\be@latin"
|
|
||||||
File /r "po\bg"
|
|
||||||
File /r "po\br"
|
|
||||||
File /r "po\cs"
|
|
||||||
File /r "po\da"
|
|
||||||
File /r "po\el"
|
|
||||||
File /r "po\eo"
|
|
||||||
File /r "po\eu"
|
|
||||||
File /r "po\gl"
|
|
||||||
File /r "po\he"
|
|
||||||
File /r "po\hr"
|
|
||||||
File /r "po\lt"
|
|
||||||
File /r "po\nb"
|
|
||||||
File /r "po\nl"
|
|
||||||
File /r "po\no"
|
|
||||||
File /r "po\pl"
|
|
||||||
File /r "po\pt"
|
|
||||||
File /r "po\pt_BR"
|
|
||||||
File /r "po\sk"
|
|
||||||
File /r "po\sr"
|
|
||||||
File /r "po\sr@Latn"
|
|
||||||
File /r "po\sv"
|
|
||||||
File /r "po\uk"
|
|
||||||
File /r "po\zh_CN"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
SectionGroupEnd
|
|
||||||
|
|
||||||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||||||
!insertmacro MUI_DESCRIPTION_TEXT ${SecGajim} $(DESC_SecGajim)
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecGajim} $(DESC_SecGajim)
|
||||||
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
After Width: | Height: | Size: 293 KiB |
|
@ -1,441 +1,262 @@
|
||||||
; File encoding 'UTF-8 with BOM'
|
; File encoding 'UTF-8 with BOM'
|
||||||
|
|
||||||
Unicode true
|
Unicode true
|
||||||
!include "MUI2.nsh"
|
!include "MUI2.nsh"
|
||||||
|
|
||||||
Name "Gajim"
|
Name "Gajim"
|
||||||
OutFile "Gajim.exe"
|
OutFile "Gajim.exe"
|
||||||
SetCompressor /final /solid lzma
|
SetCompressor /final /solid lzma
|
||||||
|
SetCompressorDictSize 32
|
||||||
!define myAppName "Gajim"
|
|
||||||
|
!define myAppName "Gajim"
|
||||||
InstallDir "$PROGRAMFILES\Gajim"
|
|
||||||
InstallDirRegKey HKCU "Software\Gajim" ""
|
InstallDir "$PROGRAMFILES\Gajim"
|
||||||
RequestExecutionLevel admin
|
InstallDirRegKey HKCU "Software\Gajim" ""
|
||||||
|
RequestExecutionLevel admin
|
||||||
Var StartMenuFolder
|
|
||||||
|
Var StartMenuFolder
|
||||||
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
|
|
||||||
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico"
|
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
|
||||||
!define MUI_HEADERIMAGE
|
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico"
|
||||||
!define MUI_HEADERIMAGE_BITMAP "data\pixmaps\nsis_header.bmp"
|
!define MUI_HEADERIMAGE
|
||||||
!define MUI_WELCOMEFINISHPAGE_BITMAP "data\pixmaps\nsis_wizard.bmp"
|
!define MUI_HEADERIMAGE_BITMAP "mingw32\gajim\data\pixmaps\nsis_header.bmp"
|
||||||
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "data\pixmaps\nsis_wizard.bmp"
|
!define MUI_WELCOMEFINISHPAGE_BITMAP "mingw32\gajim\data\pixmaps\nsis_wizard.bmp"
|
||||||
;!define MUI_COMPONENTSPAGE_CHECKBITMAP "${NSISDIR}\Contrib\Graphics\Checks\colorful.bmp"
|
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "mingw32\gajim\data\pixmaps\nsis_wizard.bmp"
|
||||||
!define MUI_COMPONENTSPAGE_SMALLDESC
|
;!define MUI_COMPONENTSPAGE_CHECKBITMAP "${NSISDIR}\Contrib\Graphics\Checks\colorful.bmp"
|
||||||
!define MUI_ABORTWARNING
|
!define MUI_COMPONENTSPAGE_SMALLDESC
|
||||||
|
!define MUI_ABORTWARNING
|
||||||
!insertmacro MUI_PAGE_WELCOME
|
|
||||||
!insertmacro MUI_PAGE_LICENSE "COPYING"
|
!insertmacro MUI_PAGE_WELCOME
|
||||||
!insertmacro MUI_PAGE_COMPONENTS
|
!insertmacro MUI_PAGE_LICENSE "mingw32\gajim\COPYING"
|
||||||
!insertmacro MUI_PAGE_DIRECTORY
|
!insertmacro MUI_PAGE_COMPONENTS
|
||||||
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
|
!insertmacro MUI_PAGE_DIRECTORY
|
||||||
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Gajim"
|
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
|
||||||
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
|
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Gajim"
|
||||||
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
|
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
|
||||||
!insertmacro MUI_PAGE_INSTFILES
|
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
|
||||||
!define MUI_FINISHPAGE_RUN "$INSTDIR\build\Gajim.exe"
|
!insertmacro MUI_PAGE_INSTFILES
|
||||||
!insertmacro MUI_PAGE_FINISH
|
!define MUI_FINISHPAGE_RUN "$INSTDIR\bin\Gajim.exe"
|
||||||
|
!insertmacro MUI_PAGE_FINISH
|
||||||
!insertmacro MUI_UNPAGE_WELCOME
|
|
||||||
!insertmacro MUI_UNPAGE_CONFIRM
|
!insertmacro MUI_UNPAGE_WELCOME
|
||||||
!insertmacro MUI_UNPAGE_INSTFILES
|
!insertmacro MUI_UNPAGE_CONFIRM
|
||||||
!insertmacro MUI_UNPAGE_FINISH
|
!insertmacro MUI_UNPAGE_INSTFILES
|
||||||
|
!insertmacro MUI_UNPAGE_FINISH
|
||||||
;Show all languages, despite user's codepage
|
|
||||||
!define MUI_LANGDLL_ALLLANGUAGES
|
;Show all languages, despite user's codepage
|
||||||
|
!define MUI_LANGDLL_ALLLANGUAGES
|
||||||
!insertmacro MUI_LANGUAGE "English"
|
|
||||||
!insertmacro MUI_LANGUAGE "French"
|
!insertmacro MUI_LANGUAGE "English"
|
||||||
!insertmacro MUI_LANGUAGE "German"
|
!insertmacro MUI_LANGUAGE "French"
|
||||||
!insertmacro MUI_LANGUAGE "Italian"
|
!insertmacro MUI_LANGUAGE "German"
|
||||||
!insertmacro MUI_LANGUAGE "Russian"
|
!insertmacro MUI_LANGUAGE "Italian"
|
||||||
!insertmacro MUI_LANGUAGE "Hebrew"
|
!insertmacro MUI_LANGUAGE "Russian"
|
||||||
!insertmacro MUI_RESERVEFILE_LANGDLL
|
!insertmacro MUI_LANGUAGE "Hebrew"
|
||||||
|
!insertmacro MUI_RESERVEFILE_LANGDLL
|
||||||
; English
|
|
||||||
LangString NAME_Emoticons ${LANG_ENGLISH} "Emoticons"
|
; English
|
||||||
LangString NAME_Iconsets ${LANG_ENGLISH} "Iconsets"
|
LangString NAME_Emoticons ${LANG_ENGLISH} "Emoticons"
|
||||||
LangString NAME_Languages ${LANG_ENGLISH} "Languages"
|
LangString NAME_Iconsets ${LANG_ENGLISH} "Iconsets"
|
||||||
LangString NAME_SecLanguagesOther ${LANG_ENGLISH} "Other"
|
LangString NAME_Languages ${LANG_ENGLISH} "Languages"
|
||||||
LangString NAME_Themes ${LANG_ENGLISH} "Themes"
|
LangString NAME_SecLanguagesOther ${LANG_ENGLISH} "Other"
|
||||||
LangString NAME_SecDesktopIcon ${LANG_ENGLISH} "Create icon on desktop"
|
LangString NAME_Themes ${LANG_ENGLISH} "Themes"
|
||||||
LangString NAME_SecAutostart ${LANG_ENGLISH} "Start Gajim when Windows starts"
|
LangString NAME_SecDesktopIcon ${LANG_ENGLISH} "Create icon on desktop"
|
||||||
LangString DESC_SecGajim ${LANG_ENGLISH} "Installs the main Gajim files."
|
LangString NAME_SecAutostart ${LANG_ENGLISH} "Start Gajim when Windows starts"
|
||||||
LangString DESC_SecDesktopIcon ${LANG_ENGLISH} "If set, a shortcut for Gajim will be created on the desktop."
|
LangString DESC_SecGajim ${LANG_ENGLISH} "Installs the main Gajim files."
|
||||||
LangString DESC_SecAutostart ${LANG_ENGLISH} "If set, Gajim will be automatically started when Windows starts."
|
LangString DESC_SecDesktopIcon ${LANG_ENGLISH} "If set, a shortcut for Gajim will be created on the desktop."
|
||||||
LangString STR_Installed ${LANG_ENGLISH} "Apparently, Gajim is already installed. Uninstall it?"
|
LangString DESC_SecAutostart ${LANG_ENGLISH} "If set, Gajim will be automatically started when Windows starts."
|
||||||
LangString STR_Running ${LANG_ENGLISH} "It appears that Gajim is currently running.$\n\
|
LangString STR_Installed ${LANG_ENGLISH} "Apparently, Gajim is already installed. Uninstall it?"
|
||||||
Please quit Gajim and restart the uninstaller."
|
LangString STR_Running ${LANG_ENGLISH} "It appears that Gajim is currently running.$\n\
|
||||||
|
Please quit Gajim and restart the uninstaller."
|
||||||
; French
|
|
||||||
LangString NAME_Emoticons ${LANG_FRENCH} "Emoticônes"
|
; French
|
||||||
LangString NAME_Iconsets ${LANG_FRENCH} "Bibliothèque d'icônes"
|
LangString NAME_Emoticons ${LANG_FRENCH} "Emoticônes"
|
||||||
LangString NAME_Languages ${LANG_FRENCH} "Langues"
|
LangString NAME_Iconsets ${LANG_FRENCH} "Bibliothèque d'icônes"
|
||||||
LangString NAME_SecLanguagesOther ${LANG_FRENCH} "Autre"
|
LangString NAME_Languages ${LANG_FRENCH} "Langues"
|
||||||
LangString NAME_Themes ${LANG_FRENCH} "Thèmes"
|
LangString NAME_SecLanguagesOther ${LANG_FRENCH} "Autre"
|
||||||
LangString NAME_SecDesktopIcon ${LANG_FRENCH} "Créer une icône sur le bureau"
|
LangString NAME_Themes ${LANG_FRENCH} "Thèmes"
|
||||||
LangString NAME_SecAutostart ${LANG_FRENCH} "Lancer Gajim au démarrage de Windows"
|
LangString NAME_SecDesktopIcon ${LANG_FRENCH} "Créer une icône sur le bureau"
|
||||||
LangString DESC_SecGajim ${LANG_FRENCH} "Installer les fichiers principaux de Gajim."
|
LangString NAME_SecAutostart ${LANG_FRENCH} "Lancer Gajim au démarrage de Windows"
|
||||||
LangString DESC_SecDesktopIcon ${LANG_FRENCH} "Si selectionné, un raccourci pour Gajim sera créé sur le bureau."
|
LangString DESC_SecGajim ${LANG_FRENCH} "Installer les fichiers principaux de Gajim."
|
||||||
LangString DESC_SecAutostart ${LANG_FRENCH} "Si activé, Gajim sera automatiquement lancé au démarrage de Windows."
|
LangString DESC_SecDesktopIcon ${LANG_FRENCH} "Si selectionné, un raccourci pour Gajim sera créé sur le bureau."
|
||||||
LangString STR_Installed ${LANG_FRENCH} "Gajim est apparement déjà installé. Lancer la désinstallation ?"
|
LangString DESC_SecAutostart ${LANG_FRENCH} "Si activé, Gajim sera automatiquement lancé au démarrage de Windows."
|
||||||
LangString STR_Running ${LANG_FRENCH} "Gajim est apparament lancé.$\n\
|
LangString STR_Installed ${LANG_FRENCH} "Gajim est apparement déjà installé. Lancer la désinstallation ?"
|
||||||
Fermez-le et redémarrez le désinstallateur."
|
LangString STR_Running ${LANG_FRENCH} "Gajim est apparament lancé.$\n\
|
||||||
|
Fermez-le et redémarrez le désinstallateur."
|
||||||
; German
|
|
||||||
LangString NAME_Emoticons ${LANG_GERMAN} "Emoticons"
|
; German
|
||||||
LangString NAME_Iconsets ${LANG_GERMAN} "Symbolsets"
|
LangString NAME_Emoticons ${LANG_GERMAN} "Emoticons"
|
||||||
LangString NAME_Languages ${LANG_GERMAN} "Sprachen"
|
LangString NAME_Iconsets ${LANG_GERMAN} "Symbolsets"
|
||||||
LangString NAME_SecLanguagesOther ${LANG_GERMAN} "Sonstige"
|
LangString NAME_Languages ${LANG_GERMAN} "Sprachen"
|
||||||
LangString NAME_Themes ${LANG_GERMAN} "Designs"
|
LangString NAME_SecLanguagesOther ${LANG_GERMAN} "Sonstige"
|
||||||
LangString NAME_SecDesktopIcon ${LANG_GERMAN} "Desktop-Icon erstellen"
|
LangString NAME_Themes ${LANG_GERMAN} "Designs"
|
||||||
LangString NAME_SecAutostart ${LANG_GERMAN} "Gajim mit Windows starten"
|
LangString NAME_SecDesktopIcon ${LANG_GERMAN} "Desktop-Icon erstellen"
|
||||||
LangString DESC_SecGajim ${LANG_GERMAN} "Installiert die Hauptdateien von Gajim."
|
LangString NAME_SecAutostart ${LANG_GERMAN} "Gajim mit Windows starten"
|
||||||
LangString DESC_SecDesktopIcon ${LANG_GERMAN} "Wenn dies aktiviert wird, wird ein Icon für Gajim auf dem Desktop erstellt."
|
LangString DESC_SecGajim ${LANG_GERMAN} "Installiert die Hauptdateien von Gajim."
|
||||||
LangString DESC_SecAutostart ${LANG_GERMAN} "Gajim wird automatisch gestartet, sowie Windows startet, wenn dies aktivier wird."
|
LangString DESC_SecDesktopIcon ${LANG_GERMAN} "Wenn dies aktiviert wird, wird ein Icon für Gajim auf dem Desktop erstellt."
|
||||||
LangString STR_Installed ${LANG_GERMAN} "Gajim is apparently already installed. Uninstall it?"
|
LangString DESC_SecAutostart ${LANG_GERMAN} "Gajim wird automatisch gestartet, sowie Windows startet, wenn dies aktivier wird."
|
||||||
LangString STR_Running ${LANG_GERMAN} "Es scheint, dass Gajim bereits läuft.$\n\
|
LangString STR_Installed ${LANG_GERMAN} "Gajim is apparently already installed. Uninstall it?"
|
||||||
Bitte beenden Sie es und starten Sie den Installer erneut.."
|
LangString STR_Running ${LANG_GERMAN} "Es scheint, dass Gajim bereits läuft.$\n\
|
||||||
|
Bitte beenden Sie es und starten Sie den Installer erneut.."
|
||||||
; Italian
|
|
||||||
LangString NAME_Emoticons ${LANG_ITALIAN} "Emoticons"
|
; Italian
|
||||||
LangString NAME_Iconsets ${LANG_ITALIAN} "Set di icone"
|
LangString NAME_Emoticons ${LANG_ITALIAN} "Emoticons"
|
||||||
LangString NAME_Languages ${LANG_ITALIAN} "Lingue"
|
LangString NAME_Iconsets ${LANG_ITALIAN} "Set di icone"
|
||||||
LangString NAME_SecLanguagesOther ${LANG_ITALIAN} "Altre"
|
LangString NAME_Languages ${LANG_ITALIAN} "Lingue"
|
||||||
LangString NAME_Themes ${LANG_ITALIAN} "Temi"
|
LangString NAME_SecLanguagesOther ${LANG_ITALIAN} "Altre"
|
||||||
LangString NAME_SecDesktopIcon ${LANG_ITALIAN} "Crea un'icona sul desktop"
|
LangString NAME_Themes ${LANG_ITALIAN} "Temi"
|
||||||
LangString NAME_SecAutostart ${LANG_ITALIAN} "Lancia Gajim quando parte Windows"
|
LangString NAME_SecDesktopIcon ${LANG_ITALIAN} "Crea un'icona sul desktop"
|
||||||
LangString DESC_SecGajim ${LANG_ITALIAN} "Installa i file principali di Gajim."
|
LangString NAME_SecAutostart ${LANG_ITALIAN} "Lancia Gajim quando parte Windows"
|
||||||
LangString DESC_SecDesktopIcon ${LANG_ITALIAN} "Se selezionato, un'icona verrà creata sul desktop."
|
LangString DESC_SecGajim ${LANG_ITALIAN} "Installa i file principali di Gajim."
|
||||||
LangString DESC_SecAutostart ${LANG_ITALIAN} "Se selezionato, Gajim sarà eseguito all'avvio di Windows."
|
LangString DESC_SecDesktopIcon ${LANG_ITALIAN} "Se selezionato, un'icona verrà creata sul desktop."
|
||||||
LangString STR_Installed ${LANG_ITALIAN} "Gajim is apparently already installed. Uninstall it?"
|
LangString DESC_SecAutostart ${LANG_ITALIAN} "Se selezionato, Gajim sarà eseguito all'avvio di Windows."
|
||||||
LangString STR_Running ${LANG_ITALIAN} "It appears that Gajim is currently running.$\n\
|
LangString STR_Installed ${LANG_ITALIAN} "Gajim is apparently already installed. Uninstall it?"
|
||||||
Close it and restart uninstaller."
|
LangString STR_Running ${LANG_ITALIAN} "It appears that Gajim is currently running.$\n\
|
||||||
|
Close it and restart uninstaller."
|
||||||
; Russian
|
|
||||||
LangString NAME_Emoticons ${LANG_RUSSIAN} "Смайлики"
|
; Russian
|
||||||
LangString NAME_Iconsets ${LANG_RUSSIAN} "Темы иконок"
|
LangString NAME_Emoticons ${LANG_RUSSIAN} "Смайлики"
|
||||||
LangString NAME_Languages ${LANG_RUSSIAN} "Языки"
|
LangString NAME_Iconsets ${LANG_RUSSIAN} "Темы иконок"
|
||||||
LangString NAME_SecLanguagesOther ${LANG_RUSSIAN} "Другое"
|
LangString NAME_Languages ${LANG_RUSSIAN} "Языки"
|
||||||
LangString NAME_Themes ${LANG_RUSSIAN} "Темы"
|
LangString NAME_SecLanguagesOther ${LANG_RUSSIAN} "Другое"
|
||||||
LangString NAME_SecDesktopIcon ${LANG_RUSSIAN} "Создать я лык на абочем столе"
|
LangString NAME_Themes ${LANG_RUSSIAN} "Темы"
|
||||||
LangString NAME_SecAutostart ${LANG_RUSSIAN} "Запускать Gajim при загрузке Windows"
|
LangString NAME_SecDesktopIcon ${LANG_RUSSIAN} "Создать я лык на абочем столе"
|
||||||
LangString DESC_SecGajim ${LANG_RUSSIAN} "Установка основных файлов Gajim."
|
LangString NAME_SecAutostart ${LANG_RUSSIAN} "Запускать Gajim при загрузке Windows"
|
||||||
LangString DESC_SecDesktopIcon ${LANG_RUSSIAN} "Если отмечено, на рабочем столе будет создан ярлык Gajim."
|
LangString DESC_SecGajim ${LANG_RUSSIAN} "Установка основных файлов Gajim."
|
||||||
LangString DESC_SecAutostart ${LANG_RUSSIAN} "Если отмечено, Gajim будет автоматически запускаться при загрузке Windows."
|
LangString DESC_SecDesktopIcon ${LANG_RUSSIAN} "Если отмечено, на рабочем столе будет создан ярлык Gajim."
|
||||||
LangString STR_Installed ${LANG_RUSSIAN} "Похоже, Gajim уже установлен. Деинсталлировать установленную версию?"
|
LangString DESC_SecAutostart ${LANG_RUSSIAN} "Если отмечено, Gajim будет автоматически запускаться при загрузке Windows."
|
||||||
LangString STR_Running ${LANG_RUSSIAN} "Похоже, Gajim уже запущен.$\n\
|
LangString STR_Installed ${LANG_RUSSIAN} "Похоже, Gajim уже установлен. Деинсталлировать установленную версию?"
|
||||||
Закройте его и запустите деинсталлятор снова."
|
LangString STR_Running ${LANG_RUSSIAN} "Похоже, Gajim уже запущен.$\n\
|
||||||
|
Закройте его и запустите деинсталлятор снова."
|
||||||
; Hebrew
|
|
||||||
LangString NAME_Emoticons ${LANG_HEBREW} "רגשונים"
|
; Hebrew
|
||||||
LangString NAME_Iconsets ${LANG_HEBREW} "מערכי צלמית"
|
LangString NAME_Emoticons ${LANG_HEBREW} "רגשונים"
|
||||||
LangString NAME_Languages ${LANG_HEBREW} "שפות"
|
LangString NAME_Iconsets ${LANG_HEBREW} "מערכי צלמית"
|
||||||
LangString NAME_SecLanguagesOther ${LANG_HEBREW} "אחרות"
|
LangString NAME_Languages ${LANG_HEBREW} "שפות"
|
||||||
LangString NAME_Themes ${LANG_HEBREW} "ערכאות נושא"
|
LangString NAME_SecLanguagesOther ${LANG_HEBREW} "אחרות"
|
||||||
LangString NAME_SecDesktopIcon ${LANG_HEBREW} "צור סמל בשולחן עבודה"
|
LangString NAME_Themes ${LANG_HEBREW} "ערכאות נושא"
|
||||||
LangString NAME_SecAutostart ${LANG_HEBREW} "הפעל את Gajim כאשר Windows מתחיל"
|
LangString NAME_SecDesktopIcon ${LANG_HEBREW} "צור סמל בשולחן עבודה"
|
||||||
LangString DESC_SecGajim ${LANG_HEBREW} "מתקין קבצי Gajim עיקריים."
|
LangString NAME_SecAutostart ${LANG_HEBREW} "הפעל את Gajim כאשר Windows מתחיל"
|
||||||
LangString DESC_SecDesktopIcon ${LANG_HEBREW} "במידה ונקבעת, קיצור דרך עבור Gajim יושם על שולחן העבודה."
|
LangString DESC_SecGajim ${LANG_HEBREW} "מתקין קבצי Gajim עיקריים."
|
||||||
LangString DESC_SecAutostart ${LANG_HEBREW} "במידה ונקבעת, Gajim יופעל אוטומטית כאשר Windows מתחיל."
|
LangString DESC_SecDesktopIcon ${LANG_HEBREW} "במידה ונקבעת, קיצור דרך עבור Gajim יושם על שולחן העבודה."
|
||||||
LangString STR_Installed ${LANG_HEBREW} "כפי הנראה, Gajim כבר מותקן. להסיר אותו?"
|
LangString DESC_SecAutostart ${LANG_HEBREW} "במידה ונקבעת, Gajim יופעל אוטומטית כאשר Windows מתחיל."
|
||||||
LangString STR_Running ${LANG_HEBREW} "נראה שהתוכנית Gajim מורצת כעת.$\n\
|
LangString STR_Installed ${LANG_HEBREW} "כפי הנראה, Gajim כבר מותקן. להסיר אותו?"
|
||||||
אנא צא מן Gajim ואתחל את מסיר ההתקנה."
|
LangString STR_Running ${LANG_HEBREW} "נראה שהתוכנית Gajim מורצת כעת.$\n\
|
||||||
|
אנא צא מן Gajim ואתחל את מסיר ההתקנה."
|
||||||
Section "Gajim" SecGajim
|
|
||||||
SectionIn RO
|
Section "Gajim" SecGajim
|
||||||
|
SectionIn RO
|
||||||
SetOutPath "$INSTDIR"
|
|
||||||
File "AUTHORS"
|
SetOutPath "$INSTDIR"
|
||||||
File "COPYING"
|
File /r "mingw32\*.*"
|
||||||
File "THANKS"
|
|
||||||
File "THANKS.artists"
|
WriteRegStr HKCU "Software\Gajim" "" $INSTDIR
|
||||||
File /r "build"
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "DisplayName" "Gajim"
|
||||||
SetOutPath "$INSTDIR\build"
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "UninstallString" "$INSTDIR\Uninstall.exe"
|
||||||
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "DisplayIcon" "$INSTDIR\bin\Gajim.exe"
|
||||||
WriteRegStr HKCU "Software\Gajim" "" $INSTDIR
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "DisplayVersion" "${VERSION}"
|
||||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "DisplayName" "Gajim"
|
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "URLInfoAbout" "https://www.gajim.org/"
|
||||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "UninstallString" "$INSTDIR\Uninstall.exe"
|
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "DisplayIcon" "$INSTDIR\build\Gajim.exe"
|
|
||||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "DisplayVersion" "0.16.10"
|
SetOutPath "$INSTDIR\bin"
|
||||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "URLInfoAbout" "http://www.gajim.org/"
|
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
||||||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
SetShellVarContext current
|
||||||
|
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
|
||||||
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Gajim.lnk" "$INSTDIR\bin\Gajim.exe"
|
||||||
SetShellVarContext current
|
SetShellVarContext all
|
||||||
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
|
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
|
||||||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Gajim.lnk" "$INSTDIR\build\Gajim.exe"
|
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Gajim.lnk" "$INSTDIR\bin\Gajim.exe"
|
||||||
SetShellVarContext all
|
!insertmacro MUI_STARTMENU_WRITE_END
|
||||||
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
|
|
||||||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Gajim.lnk" "$INSTDIR\build\Gajim.exe"
|
SectionEnd
|
||||||
!insertmacro MUI_STARTMENU_WRITE_END
|
|
||||||
|
Section $(NAME_SecDesktopIcon) SecDesktopIcon
|
||||||
SetOutPath "$INSTDIR\data"
|
SetShellVarContext current
|
||||||
File /r "data\gui"
|
SetOutPath "$INSTDIR\bin"
|
||||||
File /r "data\moods"
|
CreateShortCut "$DESKTOP\Gajim.lnk" "$INSTDIR\bin\Gajim.exe"
|
||||||
File /r "data\activities"
|
SectionEnd
|
||||||
File /r "data\other"
|
|
||||||
File /r "data\pixmaps"
|
Section $(NAME_SecAutostart) SecAutostart
|
||||||
File /r "data\sounds"
|
SetShellVarContext current
|
||||||
|
SetOutPath "$INSTDIR\bin"
|
||||||
SetOutPath "$INSTDIR\icons"
|
CreateShortCut "$SMSTARTUP\Gajim.lnk" "$INSTDIR\bin\Gajim.exe"
|
||||||
File /r "icons\hicolor"
|
SectionEnd
|
||||||
SectionEnd
|
|
||||||
|
Section "Uninstall"
|
||||||
Section "Plugins" SecPlugins
|
RMDir /r "$INSTDIR"
|
||||||
SetOutPath "$INSTDIR\plugins"
|
|
||||||
File /r "plugins\plugin_installer"
|
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
|
||||||
SectionEnd
|
|
||||||
|
SetShellVarContext current
|
||||||
SectionGroup $(NAME_Emoticons)
|
Delete "$SMPROGRAMS\$StartMenuFolder\Gajim.lnk"
|
||||||
|
Delete "$SMPROGRAMS\$StartMenuFolder\Change Theme.lnk"
|
||||||
Section "animated" SecEmoticonsAnimated
|
RMDir "$SMPROGRAMS\$StartMenuFolder"
|
||||||
SetOutPath "$INSTDIR\data\emoticons"
|
Delete "$DESKTOP\Gajim.lnk"
|
||||||
File /r "data\emoticons\animated"
|
Delete "$SMSTARTUP\Gajim.lnk"
|
||||||
SectionEnd
|
SetShellVarContext all
|
||||||
|
Delete "$SMPROGRAMS\$StartMenuFolder\Gajim.lnk"
|
||||||
Section "static" SecEmoticonsStatic
|
Delete "$SMPROGRAMS\$StartMenuFolder\Change Theme.lnk"
|
||||||
SectionIn RO
|
RMDir "$SMPROGRAMS\$StartMenuFolder"
|
||||||
SetOutPath "$INSTDIR\data\emoticons"
|
|
||||||
File /r "data\emoticons\static"
|
DeleteRegKey /ifempty HKCU "Software\Gajim"
|
||||||
SectioNEnd
|
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim"
|
||||||
|
SectionEnd
|
||||||
Section "static-big" SecEmoticonsStaticBig
|
|
||||||
SetOutPath "$INSTDIR\data\emoticons"
|
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||||||
File /r "data\emoticons\static-big"
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecGajim} $(DESC_SecGajim)
|
||||||
SectionEnd
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecDesktopIcon} $(DESC_SecDesktopIcon)
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${SecAutostart} $(DESC_SecAutostart)
|
||||||
SectionGroupEnd
|
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||||||
|
|
||||||
SectionGroup $(NAME_Iconsets)
|
Function un.onInit
|
||||||
|
; Check that Gajim is not running before uninstalling
|
||||||
Section "dcraven" SecIconsetsDcraven
|
FindWindow $0 "gdkWindowToplevel" "Gajim"
|
||||||
SectionIn RO
|
StrCmp $0 0 Remove
|
||||||
SetOutPath "$INSTDIR\data\iconsets"
|
MessageBox MB_ICONSTOP|MB_OK $(STR_Running)
|
||||||
File /r "data\iconsets\dcraven"
|
Quit
|
||||||
SectionEnd
|
Remove:
|
||||||
|
!insertmacro MUI_UNGETLANGUAGE
|
||||||
Section "gnome" SecIconsetsGnome
|
FunctionEnd
|
||||||
SetOutPath "$INSTDIR\data\iconsets"
|
|
||||||
File /r "data\iconsets\gnome"
|
Function .onInit
|
||||||
SectionEnd
|
BringToFront
|
||||||
|
; Check if already running
|
||||||
Section "goojim" SecIconsetsGoojim
|
; If so don't open another but bring to front
|
||||||
SetOutPath "$INSTDIR\data\iconsets"
|
System::Call "kernel32::CreateMutexA(i 0, i 0, t '$(^Name)') i .r0 ?e"
|
||||||
File /r "data\iconsets\goojim"
|
Pop $0
|
||||||
SectionEnd
|
StrCmp $0 0 launch
|
||||||
|
StrLen $0 "$(^Name)"
|
||||||
Section "gota" SecIconsetsGota
|
IntOp $0 $0 + 1
|
||||||
SetOutPath "$INSTDIR\data\iconsets"
|
FindWindow $1 '#32770' '' 0 $1
|
||||||
File /r "data\iconsets\gota"
|
IntCmp $1 0 +3
|
||||||
SectionEnd
|
System::Call "user32::ShowWindow(i r1,i 9) i." ; If minimized then maximize
|
||||||
|
System::Call "user32::SetForegroundWindow(i r1) i." ; Bring to front
|
||||||
Section "jabberbulb" SecIconsetsJabberbulb
|
Abort
|
||||||
SetOutPath "$INSTDIR\data\iconsets"
|
|
||||||
File /r "data\iconsets\jabberbulb"
|
launch:
|
||||||
SectionEnd
|
; Check to see if old install (inno setup) is already installed
|
||||||
|
ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Gajim_is1" "UninstallString"
|
||||||
Section "sun" SecIconsetsSun
|
; remove first and last " char
|
||||||
SetOutPath "$INSTDIR\data\iconsets"
|
StrLen $0 $R0
|
||||||
File /r "data\iconsets\sun"
|
IntOp $0 $0 - 2
|
||||||
SectionEnd
|
strcpy $1 $R0 $0 1
|
||||||
|
IfFileExists $1 +1 NotInstalled
|
||||||
Section "wroop" SecIconsetsWroop
|
MessageBox MB_YESNO|MB_DEFBUTTON2|MB_TOPMOST $(STR_Installed) IDNO Quit
|
||||||
SetOutPath "$INSTDIR\data\iconsets"
|
StrCmp $R1 2 Quit +1
|
||||||
File /r "data\iconsets\wroop"
|
ExecWait '$R0 _?=$INSTDIR' $R2
|
||||||
SectionEnd
|
StrCmp $R2 0 +1 Quit
|
||||||
|
|
||||||
Section "transports" SecIconsetsTransports
|
NotInstalled:
|
||||||
SetOutPath "$INSTDIR\data\iconsets"
|
; Check to see if new installer (NSIS)already installed
|
||||||
File /r "data\iconsets\transports"
|
ReadRegStr $R3 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "UninstallString"
|
||||||
SectionIn Ro
|
IfFileExists $R3 +1 ReallyNotInstalled
|
||||||
SectionEnd
|
MessageBox MB_YESNO|MB_DEFBUTTON2|MB_TOPMOST $(STR_Installed) IDNO Quit
|
||||||
|
StrCmp $R4 2 Quit +1
|
||||||
SectionGroupEnd
|
ExecWait '$R3 _?=$INSTDIR' $R5
|
||||||
|
StrCmp $R5 0 ReallyNotInstalled Quit
|
||||||
SectionGroup $(NAME_Languages)
|
Quit:
|
||||||
|
Quit
|
||||||
Section "English (UK)" SecLanguagesEnglishUK
|
|
||||||
SetOutPath "$INSTDIR\po"
|
ReallyNotInstalled:
|
||||||
File /r "po\en_GB"
|
!insertmacro MUI_LANGDLL_DISPLAY
|
||||||
SectionEnd
|
FunctionEnd
|
||||||
|
|
||||||
Section "French" SecLanguagesFrench
|
|
||||||
SetOutPath "$INSTDIR\po"
|
|
||||||
File /r "po\fr"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "German" SecLanguagesGerman
|
|
||||||
SetOutPath "$INSTDIR\po"
|
|
||||||
File /r "po\de"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "Italian" SecLanguagesItalian
|
|
||||||
SetOutPath "$INSTDIR\po"
|
|
||||||
File /r "po\it"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "Spanish" SecLanguagesSpanish
|
|
||||||
SetOutPath "$INSTDIR\po"
|
|
||||||
File /r "po\es"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "Russian" SecLanguagesRussian
|
|
||||||
SetOutPath "$INSTDIR\po"
|
|
||||||
File /r "po\ru"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section $(NAME_SecLanguagesOther) SecLanguagesOther
|
|
||||||
SetOutPath "$INSTDIR\po"
|
|
||||||
File /r "po\be"
|
|
||||||
File /r "po\be@latin"
|
|
||||||
File /r "po\bg"
|
|
||||||
File /r "po\br"
|
|
||||||
File /r "po\cs"
|
|
||||||
File /r "po\da"
|
|
||||||
File /r "po\el"
|
|
||||||
File /r "po\eo"
|
|
||||||
File /r "po\eu"
|
|
||||||
File /r "po\gl"
|
|
||||||
File /r "po\he"
|
|
||||||
File /r "po\hr"
|
|
||||||
File /r "po\lt"
|
|
||||||
File /r "po\nb"
|
|
||||||
File /r "po\nl"
|
|
||||||
File /r "po\no"
|
|
||||||
File /r "po\pl"
|
|
||||||
File /r "po\pt"
|
|
||||||
File /r "po\pt_BR"
|
|
||||||
File /r "po\sk"
|
|
||||||
File /r "po\sr"
|
|
||||||
File /r "po\sr@Latn"
|
|
||||||
File /r "po\sv"
|
|
||||||
File /r "po\uk"
|
|
||||||
File /r "po\zh_CN"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
SectionGroupEnd
|
|
||||||
|
|
||||||
Section $(NAME_SecDesktopIcon) SecDesktopIcon
|
|
||||||
SetShellVarContext current
|
|
||||||
SetOutPath "$INSTDIR\build"
|
|
||||||
CreateShortCut "$DESKTOP\Gajim.lnk" "$INSTDIR\build\Gajim.exe"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section $(NAME_SecAutostart) SecAutostart
|
|
||||||
SetShellVarContext current
|
|
||||||
SetOutPath "$INSTDIR\build"
|
|
||||||
CreateShortCut "$SMSTARTUP\Gajim.lnk" "$INSTDIR\build\Gajim.exe"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
Section "Uninstall"
|
|
||||||
RMDir "$INSTDIR\bin\win32com"
|
|
||||||
RMDir /r "$INSTDIR\build"
|
|
||||||
RMDir /r "$INSTDIR\data\gui"
|
|
||||||
RMDir /r "$INSTDIR\data\moods"
|
|
||||||
RMDir /r "$INSTDIR\data\activities"
|
|
||||||
RMDir /r "$INSTDIR\data\other"
|
|
||||||
RMDir /r "$INSTDIR\data\pixmaps"
|
|
||||||
RMDir /r "$INSTDIR\data\sounds"
|
|
||||||
RMDir /r "$INSTDIR\data\emoticons\animated"
|
|
||||||
RMDir /r "$INSTDIR\data\emoticons\static"
|
|
||||||
RMDir /r "$INSTDIR\data\emoticons\static-big"
|
|
||||||
RMDir "$INSTDIR\data\emoticons"
|
|
||||||
RMDir /r "$INSTDIR\data\iconsets\dcraven"
|
|
||||||
RMDir /r "$INSTDIR\data\iconsets\gnome"
|
|
||||||
RMDir /r "$INSTDIR\data\iconsets\goojim"
|
|
||||||
RMDir /r "$INSTDIR\data\iconsets\gota"
|
|
||||||
RMDir /r "$INSTDIR\data\iconsets\jabberbulb"
|
|
||||||
RMDir /r "$INSTDIR\data\iconsets\sun"
|
|
||||||
RMDir /r "$INSTDIR\data\iconsets\wroop"
|
|
||||||
RMDir /r "$INSTDIR\data\iconsets\transports"
|
|
||||||
RMDir "$INSTDIR\data\iconsets"
|
|
||||||
RMDir "$INSTDIR\data"
|
|
||||||
RMDir /r "$INSTDIR\plugins\plugin_installer"
|
|
||||||
RMDir "$INSTDIR\plugins"
|
|
||||||
RMDir /r "$INSTDIR\icons\hicolor"
|
|
||||||
RMDir "$INSTDIR\icons"
|
|
||||||
RMDir /r "$INSTDIR\po"
|
|
||||||
Delete "$INSTDIR\AUTHORS"
|
|
||||||
Delete "$INSTDIR\COPYING"
|
|
||||||
Delete "$INSTDIR\THANKS"
|
|
||||||
Delete "$INSTDIR\THANKS.artists"
|
|
||||||
Delete "$INSTDIR\Uninstall.exe"
|
|
||||||
RMDir "$INSTDIR"
|
|
||||||
|
|
||||||
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
|
|
||||||
|
|
||||||
SetShellVarContext current
|
|
||||||
Delete "$SMPROGRAMS\$StartMenuFolder\Gajim.lnk"
|
|
||||||
Delete "$SMPROGRAMS\$StartMenuFolder\Change Theme.lnk"
|
|
||||||
RMDir "$SMPROGRAMS\$StartMenuFolder"
|
|
||||||
Delete "$DESKTOP\Gajim.lnk"
|
|
||||||
Delete "$SMSTARTUP\Gajim.lnk"
|
|
||||||
SetShellVarContext all
|
|
||||||
Delete "$SMPROGRAMS\$StartMenuFolder\Gajim.lnk"
|
|
||||||
Delete "$SMPROGRAMS\$StartMenuFolder\Change Theme.lnk"
|
|
||||||
RMDir "$SMPROGRAMS\$StartMenuFolder"
|
|
||||||
|
|
||||||
DeleteRegKey /ifempty HKCU "Software\Gajim"
|
|
||||||
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim"
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
|
||||||
!insertmacro MUI_DESCRIPTION_TEXT ${SecGajim} $(DESC_SecGajim)
|
|
||||||
!insertmacro MUI_DESCRIPTION_TEXT ${SecDesktopIcon} $(DESC_SecDesktopIcon)
|
|
||||||
!insertmacro MUI_DESCRIPTION_TEXT ${SecAutostart} $(DESC_SecAutostart)
|
|
||||||
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
|
||||||
|
|
||||||
Function un.onInit
|
|
||||||
; Check that Gajim is not running before uninstalling
|
|
||||||
FindWindow $0 "gdkWindowToplevel" "Gajim"
|
|
||||||
StrCmp $0 0 Remove
|
|
||||||
MessageBox MB_ICONSTOP|MB_OK $(STR_Running)
|
|
||||||
Quit
|
|
||||||
Remove:
|
|
||||||
!insertmacro MUI_UNGETLANGUAGE
|
|
||||||
FunctionEnd
|
|
||||||
|
|
||||||
Function .onInit
|
|
||||||
BringToFront
|
|
||||||
; Check if already running
|
|
||||||
; If so don't open another but bring to front
|
|
||||||
System::Call "kernel32::CreateMutexA(i 0, i 0, t '$(^Name)') i .r0 ?e"
|
|
||||||
Pop $0
|
|
||||||
StrCmp $0 0 launch
|
|
||||||
StrLen $0 "$(^Name)"
|
|
||||||
IntOp $0 $0 + 1
|
|
||||||
FindWindow $1 '#32770' '' 0 $1
|
|
||||||
IntCmp $1 0 +3
|
|
||||||
System::Call "user32::ShowWindow(i r1,i 9) i." ; If minimized then maximize
|
|
||||||
System::Call "user32::SetForegroundWindow(i r1) i." ; Bring to front
|
|
||||||
Abort
|
|
||||||
|
|
||||||
launch:
|
|
||||||
; Check to see if old install (inno setup) is already installed
|
|
||||||
ReadRegStr $R0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Gajim_is1" "UninstallString"
|
|
||||||
; remove first and last " char
|
|
||||||
StrLen $0 $R0
|
|
||||||
IntOp $0 $0 - 2
|
|
||||||
strcpy $1 $R0 $0 1
|
|
||||||
IfFileExists $1 +1 NotInstalled
|
|
||||||
MessageBox MB_YESNO|MB_DEFBUTTON2|MB_TOPMOST $(STR_Installed) IDNO Quit
|
|
||||||
StrCmp $R1 2 Quit +1
|
|
||||||
ExecWait '$R0 _?=$INSTDIR' $R2
|
|
||||||
StrCmp $R2 0 +1 Quit
|
|
||||||
|
|
||||||
NotInstalled:
|
|
||||||
; Check to see if new installer (NSIS)already installed
|
|
||||||
ReadRegStr $R3 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "UninstallString"
|
|
||||||
IfFileExists $R3 +1 ReallyNotInstalled
|
|
||||||
MessageBox MB_YESNO|MB_DEFBUTTON2|MB_TOPMOST $(STR_Installed) IDNO Quit
|
|
||||||
StrCmp $R4 2 Quit +1
|
|
||||||
ExecWait '$R3 _?=$INSTDIR' $R5
|
|
||||||
StrCmp $R5 0 ReallyNotInstalled Quit
|
|
||||||
Quit:
|
|
||||||
Quit
|
|
||||||
|
|
||||||
ReallyNotInstalled:
|
|
||||||
!insertmacro MUI_LANGDLL_DISPLAY
|
|
||||||
FunctionEnd
|
|
After Width: | Height: | Size: 320 B |
|
@ -0,0 +1,3 @@
|
||||||
|
<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 254 B |
After Width: | Height: | Size: 236 B |
|
@ -0,0 +1,3 @@
|
||||||
|
<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 216 B |
After Width: | Height: | Size: 219 B |
|
@ -0,0 +1,3 @@
|
||||||
|
<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 213 B |
After Width: | Height: | Size: 498 B |
After Width: | Height: | Size: 942 B |
After Width: | Height: | Size: 582 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 553 B |
After Width: | Height: | Size: 936 B |
After Width: | Height: | Size: 582 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 340 B |
After Width: | Height: | Size: 618 B |
After Width: | Height: | Size: 343 B |
After Width: | Height: | Size: 603 B |
After Width: | Height: | Size: 346 B |
After Width: | Height: | Size: 614 B |
After Width: | Height: | Size: 341 B |
After Width: | Height: | Size: 593 B |
After Width: | Height: | Size: 532 B |
|
@ -0,0 +1,3 @@
|
||||||
|
<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 304 B |
After Width: | Height: | Size: 490 B |
|
@ -0,0 +1,3 @@
|
||||||
|
<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="m12 2c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm0 2c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8 3.58-8 8-8zm-5 7v2h10v-2h-10z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 268 B |
After Width: | Height: | Size: 485 B |
|
@ -0,0 +1,3 @@
|
||||||
|
<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 247 B |
After Width: | Height: | Size: 435 B |
After Width: | Height: | Size: 809 B |
After Width: | Height: | Size: 420 B |
After Width: | Height: | Size: 808 B |
After Width: | Height: | Size: 788 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 700 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 572 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 430 B |
After Width: | Height: | Size: 797 B |
After Width: | Height: | Size: 782 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 725 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 579 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 787 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 723 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 416 B |
After Width: | Height: | Size: 747 B |
After Width: | Height: | Size: 789 B |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 690 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 589 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 422 B |
After Width: | Height: | Size: 800 B |
After Width: | Height: | Size: 809 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 712 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 615 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 579 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 320 B |
|
@ -0,0 +1,3 @@
|
||||||
|
<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 254 B |
After Width: | Height: | Size: 236 B |
|
@ -0,0 +1,3 @@
|
||||||
|
<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 216 B |
After Width: | Height: | Size: 219 B |
|
@ -0,0 +1,3 @@
|
||||||
|
<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 213 B |
After Width: | Height: | Size: 498 B |
After Width: | Height: | Size: 942 B |
After Width: | Height: | Size: 582 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 553 B |
After Width: | Height: | Size: 936 B |
After Width: | Height: | Size: 582 B |
After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 340 B |