Switch to using MSYS2 for Windows build
|
@ -19,6 +19,7 @@ stamp-h1
|
|||
Makefile
|
||||
__pycache__/
|
||||
src/gtk/
|
||||
win/_build_root
|
||||
|
||||
syntax: regexp
|
||||
^config\.*
|
||||
|
|
56
appveyor.yml
|
@ -1,8 +1,7 @@
|
|||
environment:
|
||||
|
||||
matrix:
|
||||
|
||||
- PYTHON: "C:\\Python34"
|
||||
- MSYS: "C:\\msys64\\mingw32.exe"
|
||||
|
||||
branches:
|
||||
only:
|
||||
|
@ -10,49 +9,36 @@ branches:
|
|||
|
||||
clone_depth: 1
|
||||
|
||||
# init:
|
||||
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
||||
|
||||
install:
|
||||
- git clone --depth=1 --branch=gtk3 https://dev.gajim.org/gajim/gajim-plugins.git c:\projects\gajim-plugins
|
||||
|
||||
# Download & Install Dependencys
|
||||
- ps: c:\\projects\\gajim\\dependencys.ps1
|
||||
- ps: |
|
||||
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%
|
||||
- "%PYTHON%\\python.exe -m pip install --upgrade pip"
|
||||
- "%PYTHON%\\python.exe -m pip install -r c:\\projects\\gajim\\requirements.txt"
|
||||
bash 'pacman -Sy --noconfirm git'
|
||||
bash 'git clone https://dev.gajim.org/lovetox/gajim.git'
|
||||
|
||||
- ps: Add-Content C:\Python34\Lib\site-packages\google\__init__.py " "
|
||||
- "%PYTHON%\\python.exe -m pip install --no-dependencies python-axolotl"
|
||||
- "%PYTHON%\\python.exe -m pip install --global-option=build_ext --global-option --compiler=mingw32 python-axolotl-curve25519"
|
||||
|
||||
# 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'
|
||||
- cmd: '%MSYS% C:/msys64/home/appveyor/gajim/win/build.sh'
|
||||
# Ugly workaround, because i found no way to tell when mingw32.exe returns
|
||||
- cmd: timeout 900
|
||||
|
||||
# Push Installer Exe
|
||||
- ps: $env:TIME_STRING=(get-date -UFormat "%Y-%m-%d").ToString()
|
||||
- ps: Push-AppveyorArtifact Gajim.exe -FileName "Gajim-default-$($env:TIME_STRING).exe"
|
||||
- ps: Push-AppveyorArtifact Gajim-Portable.exe -FileName "Gajim-portable-default-$($env:TIME_STRING).exe"
|
||||
- ps: $env:BUILDROOT="C:\msys64\home\appveyor\gajim\win\_build_root"
|
||||
- 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
|
||||
|
||||
# on_finish:
|
||||
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
||||
|
||||
deploy:
|
||||
# FTP deployment provider settings
|
||||
- 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"
|
||||
OutFile "Gajim-Portable.exe"
|
||||
SetCompressor /final /solid lzma
|
||||
SetCompressorDictSize 32
|
||||
|
||||
!define myAppName "Gajim"
|
||||
|
||||
|
@ -14,14 +15,14 @@ RequestExecutionLevel user
|
|||
|
||||
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
|
||||
!define MUI_HEADERIMAGE
|
||||
!define MUI_HEADERIMAGE_BITMAP "data\pixmaps\nsis_header.bmp"
|
||||
!define MUI_WELCOMEFINISHPAGE_BITMAP "data\pixmaps\nsis_wizard.bmp"
|
||||
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "data\pixmaps\nsis_wizard.bmp"
|
||||
!define MUI_HEADERIMAGE_BITMAP "mingw32\gajim\data\pixmaps\nsis_header.bmp"
|
||||
!define MUI_WELCOMEFINISHPAGE_BITMAP "mingw32\gajim\data\pixmaps\nsis_wizard.bmp"
|
||||
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "mingw32\gajim\data\pixmaps\nsis_wizard.bmp"
|
||||
!define MUI_COMPONENTSPAGE_SMALLDESC
|
||||
!define MUI_ABORTWARNING
|
||||
|
||||
!insertmacro MUI_PAGE_WELCOME
|
||||
!insertmacro MUI_PAGE_LICENSE "COPYING"
|
||||
!insertmacro MUI_PAGE_LICENSE "mingw32\gajim\COPYING"
|
||||
!insertmacro MUI_PAGE_COMPONENTS
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
|
@ -100,163 +101,16 @@ Section "Gajim" SecGajim
|
|||
SectionIn RO
|
||||
|
||||
SetOutPath "$INSTDIR"
|
||||
File "AUTHORS"
|
||||
File "COPYING"
|
||||
File "THANKS"
|
||||
File "THANKS.artists"
|
||||
File /r "build"
|
||||
File /r "mingw32\*.*"
|
||||
|
||||
SetOutPath "$INSTDIR\data"
|
||||
File /r "data\gui"
|
||||
File /r "data\moods"
|
||||
File /r "data\activities"
|
||||
File /r "data\other"
|
||||
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"
|
||||
SetOutPath "$INSTDIR\bin"
|
||||
CreateShortCut "$INSTDIR\Gajim-Portable.lnk" "$INSTDIR\bin\Gajim.exe" \
|
||||
"-c ..\..\UserData" "" "" SW_SHOWNORMAL "" "Gajim Portable"
|
||||
CreateShortCut "$INSTDIR\Gajim-Portable-Debug.lnk" "$INSTDIR\bin\Gajim-Debug.exe" \
|
||||
"-c ..\..\UserData" "" "" SW_SHOWNORMAL "" "Gajim Portable Debug"
|
||||
|
||||
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_DESCRIPTION_TEXT ${SecGajim} $(DESC_SecGajim)
|
||||
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
After Width: | Height: | Size: 293 KiB |
|
@ -6,6 +6,7 @@ Unicode true
|
|||
Name "Gajim"
|
||||
OutFile "Gajim.exe"
|
||||
SetCompressor /final /solid lzma
|
||||
SetCompressorDictSize 32
|
||||
|
||||
!define myAppName "Gajim"
|
||||
|
||||
|
@ -18,15 +19,15 @@ Var StartMenuFolder
|
|||
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico"
|
||||
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico"
|
||||
!define MUI_HEADERIMAGE
|
||||
!define MUI_HEADERIMAGE_BITMAP "data\pixmaps\nsis_header.bmp"
|
||||
!define MUI_WELCOMEFINISHPAGE_BITMAP "data\pixmaps\nsis_wizard.bmp"
|
||||
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "data\pixmaps\nsis_wizard.bmp"
|
||||
!define MUI_HEADERIMAGE_BITMAP "mingw32\gajim\data\pixmaps\nsis_header.bmp"
|
||||
!define MUI_WELCOMEFINISHPAGE_BITMAP "mingw32\gajim\data\pixmaps\nsis_wizard.bmp"
|
||||
!define MUI_UNWELCOMEFINISHPAGE_BITMAP "mingw32\gajim\data\pixmaps\nsis_wizard.bmp"
|
||||
;!define MUI_COMPONENTSPAGE_CHECKBITMAP "${NSISDIR}\Contrib\Graphics\Checks\colorful.bmp"
|
||||
!define MUI_COMPONENTSPAGE_SMALLDESC
|
||||
!define MUI_ABORTWARNING
|
||||
|
||||
!insertmacro MUI_PAGE_WELCOME
|
||||
!insertmacro MUI_PAGE_LICENSE "COPYING"
|
||||
!insertmacro MUI_PAGE_LICENSE "mingw32\gajim\COPYING"
|
||||
!insertmacro MUI_PAGE_COMPONENTS
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
|
||||
|
@ -34,7 +35,7 @@ Var StartMenuFolder
|
|||
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
|
||||
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
!define MUI_FINISHPAGE_RUN "$INSTDIR\build\Gajim.exe"
|
||||
!define MUI_FINISHPAGE_RUN "$INSTDIR\bin\Gajim.exe"
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
|
||||
!insertmacro MUI_UNPAGE_WELCOME
|
||||
|
@ -147,222 +148,42 @@ Section "Gajim" SecGajim
|
|||
SectionIn RO
|
||||
|
||||
SetOutPath "$INSTDIR"
|
||||
File "AUTHORS"
|
||||
File "COPYING"
|
||||
File "THANKS"
|
||||
File "THANKS.artists"
|
||||
File /r "build"
|
||||
SetOutPath "$INSTDIR\build"
|
||||
File /r "mingw32\*.*"
|
||||
|
||||
WriteRegStr HKCU "Software\Gajim" "" $INSTDIR
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "DisplayName" "Gajim"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "UninstallString" "$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"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "URLInfoAbout" "http://www.gajim.org/"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "DisplayIcon" "$INSTDIR\bin\Gajim.exe"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "DisplayVersion" "${VERSION}"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gajim" "URLInfoAbout" "https://www.gajim.org/"
|
||||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||||
|
||||
SetOutPath "$INSTDIR\bin"
|
||||
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
||||
SetShellVarContext current
|
||||
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
|
||||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Gajim.lnk" "$INSTDIR\build\Gajim.exe"
|
||||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Gajim.lnk" "$INSTDIR\bin\Gajim.exe"
|
||||
SetShellVarContext all
|
||||
CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
|
||||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Gajim.lnk" "$INSTDIR\build\Gajim.exe"
|
||||
CreateShortCut "$SMPROGRAMS\$StartMenuFolder\Gajim.lnk" "$INSTDIR\bin\Gajim.exe"
|
||||
!insertmacro MUI_STARTMENU_WRITE_END
|
||||
|
||||
SetOutPath "$INSTDIR\data"
|
||||
File /r "data\gui"
|
||||
File /r "data\moods"
|
||||
File /r "data\activities"
|
||||
File /r "data\other"
|
||||
File /r "data\pixmaps"
|
||||
File /r "data\sounds"
|
||||
|
||||
SetOutPath "$INSTDIR\icons"
|
||||
File /r "icons\hicolor"
|
||||
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
|
||||
|
||||
Section $(NAME_SecDesktopIcon) SecDesktopIcon
|
||||
SetShellVarContext current
|
||||
SetOutPath "$INSTDIR\build"
|
||||
CreateShortCut "$DESKTOP\Gajim.lnk" "$INSTDIR\build\Gajim.exe"
|
||||
SetOutPath "$INSTDIR\bin"
|
||||
CreateShortCut "$DESKTOP\Gajim.lnk" "$INSTDIR\bin\Gajim.exe"
|
||||
SectionEnd
|
||||
|
||||
Section $(NAME_SecAutostart) SecAutostart
|
||||
SetShellVarContext current
|
||||
SetOutPath "$INSTDIR\build"
|
||||
CreateShortCut "$SMSTARTUP\Gajim.lnk" "$INSTDIR\build\Gajim.exe"
|
||||
SetOutPath "$INSTDIR\bin"
|
||||
CreateShortCut "$SMSTARTUP\Gajim.lnk" "$INSTDIR\bin\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"
|
||||
RMDir /r "$INSTDIR"
|
||||
|
||||
!insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
|
||||
|
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 |