Provide build scripts for win32 releases
This commit is contained in:
parent
366ca3f7da
commit
d36e12f21d
7 changed files with 1054 additions and 0 deletions
92
win32/README_OPENSUSE_MINGW.txt
Normal file
92
win32/README_OPENSUSE_MINGW.txt
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
This file is licensed under the terms of the LGPL 2.1, see the file COPYING.
|
||||||
|
|
||||||
|
FILES
|
||||||
|
|
||||||
|
README.txt This file, explaining how to build Midori.
|
||||||
|
midori-0.3.3.nsi The NSIS installer creation script.
|
||||||
|
|
||||||
|
packages.list The suse mingw packages required to build Midori.
|
||||||
|
x86-mingw32-opensuse/ Install and update script for the opensuse repository.
|
||||||
|
|
||||||
|
makedist/ Scripts to create distribution package
|
||||||
|
from cross-compiled binaries and libs.
|
||||||
|
|
||||||
|
crossconfig.sh Setup environment for cross build and run
|
||||||
|
configure script for cross build.
|
||||||
|
|
||||||
|
|
||||||
|
INTRODUCTION
|
||||||
|
|
||||||
|
This document will explain how to get Midori compiling for windows, hopefully.
|
||||||
|
|
||||||
|
|
||||||
|
REQUIREMENTS
|
||||||
|
|
||||||
|
A working tool chain with the mingw compiler is required. This can either be
|
||||||
|
native in Windows or a cross-chain.
|
||||||
|
This tool chain must have the following applications and all applications
|
||||||
|
needed to build Midori:
|
||||||
|
- basename, for x86-mingw32-opensuse
|
||||||
|
- bash, for the shell scripts
|
||||||
|
- cat, for makedist.midori
|
||||||
|
- cp, for x86-mingw32-opensuse and makedist.midori
|
||||||
|
- cpio, for x86-mingw32-opensuse
|
||||||
|
- echo, for x86-mingw32-opensuse and makedist.midori
|
||||||
|
- find, for makedist.midori
|
||||||
|
- git, to get the development sources
|
||||||
|
- grep, for makedist.midori
|
||||||
|
- gunzip, for x86-mingw32-opensuse
|
||||||
|
- head, for x86-mingw32-opensuse
|
||||||
|
- ls, for makedist.midori
|
||||||
|
- mkdir, for x86-mingw32-opensuse and makedist.midori
|
||||||
|
- mktemp, for makedist.midori
|
||||||
|
- pwd, for makedist.midori
|
||||||
|
- rm, for x86-mingw32-opensuse and makedist.midori
|
||||||
|
- rmdir, for makedist.midori
|
||||||
|
- rpm2cpio, for x86-mingw32-opensuse
|
||||||
|
- sed, for x86-mingw32-opensuse
|
||||||
|
- sha1sum, for makedist.midori
|
||||||
|
- sort, for x86-mingw32-opensuse and makedist.midori
|
||||||
|
- strings, for makedist.midori
|
||||||
|
- tar, to unpack the scripts
|
||||||
|
- touch, for x86-mingw32-opensuse
|
||||||
|
- uniq, for makedist.midori
|
||||||
|
- wget, for x86-mingw32-opensuse
|
||||||
|
- xmlgrep, for x86-mingw32-opensuse
|
||||||
|
- zip, for makedist.midori
|
||||||
|
|
||||||
|
|
||||||
|
PREPARATIONS
|
||||||
|
|
||||||
|
Install all the packages needed by Midori and its dependencies. There are two
|
||||||
|
ways to do this. Automatically install the dependencies from opensuse.org or
|
||||||
|
manually install them.
|
||||||
|
To automatically install the packages use the scripts and change configuration
|
||||||
|
in header of install.sh file where needed. And run ./install.sh to install all
|
||||||
|
necessary packages.
|
||||||
|
This script can be also invoked with "update" argument ./install.sh update
|
||||||
|
to update the installed packages to newer versions.
|
||||||
|
To install the dependencies manually install the packages in packages.list.
|
||||||
|
This are all the packages needed by Midori and its dependencies.
|
||||||
|
|
||||||
|
Get the Midori sources. Either use git to get them or download a snapshot or a
|
||||||
|
release. See http://git.xfce.org/apps/midori or
|
||||||
|
http://archive.xfce.org/src/apps/midori/
|
||||||
|
|
||||||
|
|
||||||
|
BUILDING
|
||||||
|
|
||||||
|
Read the instruction in the source tree. For cross compiling the script
|
||||||
|
crossconfig.sh might help.
|
||||||
|
|
||||||
|
|
||||||
|
DISTRIBUTION
|
||||||
|
|
||||||
|
To create a Windows installer for Midori you need NSIS. See
|
||||||
|
http://nsis.sourceforge.net/Main_Page
|
||||||
|
Use the makedist.midori script to get all files needed for distribution. Add
|
||||||
|
the version number as argument to makedist.midori to create a version number
|
||||||
|
in the distribution package. eg. ./makedist.midori -0.3.3
|
||||||
|
To complete the installer unzip the file created by the makedist script.
|
||||||
|
Compile midori-0.3.3.nsi with NSIS.
|
||||||
|
|
20
win32/crossconfig.sh
Normal file
20
win32/crossconfig.sh
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Copyright (C) 2010-2011 Peter de Ridder <peter@xfce.org>
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# See the file COPYING for the full license text.
|
||||||
|
|
||||||
|
export MINGW_PREFIX=/usr/i686-pc-mingw32/sys-root/mingw
|
||||||
|
export PATH=$MINGW_PREFIX/bin:$PATH
|
||||||
|
export PKG_CONFIG_PATH=$MINGW_PREFIX/lib/pkgconfig
|
||||||
|
export PKG_CONFIG_LIBDIR=
|
||||||
|
export MINGW_BUILD=`gcc -dumpmachine`
|
||||||
|
export MINGW_TARGET=i386-mingw32
|
||||||
|
|
||||||
|
CC=i386-mingw32-gcc ./configure --prefix=$MINGW_PREFIX $@
|
||||||
|
|
31
win32/makedist/dll-recursive.sh
Normal file
31
win32/makedist/dll-recursive.sh
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# Copyright (C) 2010-2011 Peter de Ridder <peter@xfce.org>
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# See the file COPYING for the full license text.
|
||||||
|
|
||||||
|
temp_file_new=`mktemp`
|
||||||
|
temp_file_old=`mktemp`
|
||||||
|
|
||||||
|
while [ "$1" ]
|
||||||
|
do
|
||||||
|
echo $1 >> $temp_file_new
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
while [ "x`sha1sum - < $temp_file_new`" != "x`sha1sum - < $temp_file_old`" ]
|
||||||
|
do
|
||||||
|
files=`cat $temp_file_new $temp_file_old | sort | uniq -u`
|
||||||
|
cp $temp_file_new $temp_file_old
|
||||||
|
strings $files 2> /dev/null | grep \\.dll | cat - $temp_file_old | sort | uniq > $temp_file_new
|
||||||
|
done
|
||||||
|
|
||||||
|
cat $temp_file_new
|
||||||
|
|
||||||
|
rm $temp_file_new $temp_file_old
|
||||||
|
|
96
win32/makedist/makedist.midori
Normal file
96
win32/makedist/makedist.midori
Normal file
|
@ -0,0 +1,96 @@
|
||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# Copyright (C) 2010-2011 Peter de Ridder <peter@xfce.org>
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# See the file COPYING for the full license text.
|
||||||
|
|
||||||
|
# a bit of configuration
|
||||||
|
root_dir=$MINGW_PREFIX
|
||||||
|
script_dir=$PWD
|
||||||
|
|
||||||
|
# create temporary working directory
|
||||||
|
temp_dir=`mktemp -d`
|
||||||
|
|
||||||
|
# generate unique filename
|
||||||
|
ARCHIVE=midori$1-`date +%Y%m%d%H%M`.zip
|
||||||
|
|
||||||
|
echo -n "Creating $ARCHIVE ."
|
||||||
|
|
||||||
|
# create destination folder
|
||||||
|
mkdir $temp_dir/midori$1
|
||||||
|
|
||||||
|
echo -n .
|
||||||
|
|
||||||
|
# auto generate dll list, only of existing files
|
||||||
|
pushd $root_dir/bin > /dev/null
|
||||||
|
$script_dir/dll-recursive.sh midori*.exe gspawn-*-helper*.exe libhunspell*.dll > $temp_dir/midori.exe.lst
|
||||||
|
files=`ls | cat - $temp_dir/midori.exe.lst | sort | uniq -d`
|
||||||
|
rm $temp_dir/midori.exe.lst
|
||||||
|
popd > /dev/null
|
||||||
|
|
||||||
|
echo -n .
|
||||||
|
|
||||||
|
# copy auto generate dll list
|
||||||
|
pushd $root_dir/bin > /dev/null
|
||||||
|
mkdir $temp_dir/midori$1/bin
|
||||||
|
cp $files $temp_dir/midori$1/bin
|
||||||
|
popd > /dev/null
|
||||||
|
|
||||||
|
echo -n .
|
||||||
|
|
||||||
|
# copy etc
|
||||||
|
pushd $root_dir > /dev/null
|
||||||
|
find etc "(" -name "*midori*" -o -name "gtkrc" ")" -prune -exec mkdir -p $temp_dir/midori$1/{} ";" -exec rmdir --ignore-fail-on-non-empty $temp_dir/midori$1/{} ";" -exec cp -r {} $temp_dir/midori$1/{} ";"
|
||||||
|
popd > /dev/null
|
||||||
|
|
||||||
|
echo -n .
|
||||||
|
|
||||||
|
# copy lib
|
||||||
|
pushd $root_dir > /dev/null
|
||||||
|
find lib "(" -path "lib/midori/*" -o -path "lib/gtk-2.0/*" -o -path "lib/enchant/*" -o -path "lib/engines/*" ")" -a -name "*.dll" -prune -exec mkdir -p $temp_dir/midori$1/{} ";" -exec rmdir --ignore-fail-on-non-empty $temp_dir/midori$1/{} ";" -exec cp -r {} $temp_dir/midori$1/{} ";"
|
||||||
|
popd > /dev/null
|
||||||
|
|
||||||
|
echo -n .
|
||||||
|
|
||||||
|
# copy share
|
||||||
|
pushd $root_dir > /dev/null
|
||||||
|
find share "(" -name "*midori*" -o -name "icons" -o -name "MS-Windows" -o -name "mime" ")" -prune -exec mkdir -p $temp_dir/midori$1/{} ";" -exec rmdir --ignore-fail-on-non-empty $temp_dir/midori$1/{} ";" -exec cp -r {} $temp_dir/midori$1/{} ";"
|
||||||
|
|
||||||
|
# copy locales for gtk
|
||||||
|
# so we have translated stock items, file dialogs
|
||||||
|
|
||||||
|
find share "(" -name "midori.mo" ")" > locale.list
|
||||||
|
mkdir -p $temp_dir/midori$1/share/locale/
|
||||||
|
for LOCALE in $(cat locale.list); do
|
||||||
|
LOCALE=$(echo $LOCALE|awk -F/ '{print $3}')
|
||||||
|
cp /usr/share/locale/$LOCALE/LC_MESSAGES/gtk20.mo $temp_dir/midori$1/share/locale/$LOCALE/LC_MESSAGES/
|
||||||
|
done
|
||||||
|
rm locale.list
|
||||||
|
popd > /dev/null
|
||||||
|
|
||||||
|
echo -n .
|
||||||
|
|
||||||
|
# copy doc files to root
|
||||||
|
cp $temp_dir/midori$1/share/doc/midori/{COPYING,AUTHORS} $temp_dir/midori$1
|
||||||
|
|
||||||
|
echo -n .
|
||||||
|
|
||||||
|
ARCHIVE=`pwd`/$ARCHIVE
|
||||||
|
|
||||||
|
# store as tar.bz2 file
|
||||||
|
pushd $temp_dir > /dev/null
|
||||||
|
zip -rq $ARCHIVE midori$1
|
||||||
|
popd > /dev/null
|
||||||
|
|
||||||
|
echo -n .
|
||||||
|
|
||||||
|
# remove working directory
|
||||||
|
rm -r $temp_dir
|
||||||
|
|
||||||
|
echo " ready"
|
||||||
|
|
664
win32/makedist/midori-0.3.3.nsi
Normal file
664
win32/makedist/midori-0.3.3.nsi
Normal file
|
@ -0,0 +1,664 @@
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; Copyright (C) 2009 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
|
||||||
|
; 2010-2011 Peter de Ridder <peter(at)xfce(dot)org>
|
||||||
|
;
|
||||||
|
; This library is free software; you can redistribute it and/or
|
||||||
|
; modify it under the terms of the GNU Lesser General Public
|
||||||
|
; License as published by the Free Software Foundation; either
|
||||||
|
; version 2.1 of the License, or (at your option) any later version.
|
||||||
|
;
|
||||||
|
; See the file COPYING for the full license text.
|
||||||
|
;
|
||||||
|
; Installer script for Midori (Windows Installer)
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
|
||||||
|
; Do a Cyclic Redundancy Check to make sure the installer was not corrupted by the download
|
||||||
|
CRCCheck force
|
||||||
|
RequestExecutionLevel user ; set execution level for Windows Vista
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;
|
||||||
|
; helper defines ;
|
||||||
|
;;;;;;;;;;;;;;;;;;;
|
||||||
|
!define PRODUCT_NAME "Midori"
|
||||||
|
!define PRODUCT_VERSION "0.3.3"
|
||||||
|
!define PRODUCT_BUILD "0"
|
||||||
|
!define PRODUCT_VERSION_ID "${PRODUCT_VERSION}.${PRODUCT_BUILD}"
|
||||||
|
!define PRODUCT_PUBLISHER "Christian Dywan"
|
||||||
|
!define PRODUCT_WEB_SITE "http://www.twotoasts.de/"
|
||||||
|
!define PRODUCT_DIR_REGKEY "Software\${PRODUCT_NAME}"
|
||||||
|
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
|
||||||
|
!define PRODUCT_BROWER_KEY "Software\Clients\StartMenuInternet"
|
||||||
|
!define PRODUCT_EXE "$INSTDIR\bin\midori.exe"
|
||||||
|
!define UNINSTALL_EXE "$INSTDIR\uninst.exe"
|
||||||
|
!define RESOURCEDIR "midori-${PRODUCT_VERSION}"
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; Version resource ;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
VIProductVersion "${PRODUCT_VERSION_ID}"
|
||||||
|
VIAddVersionKey "ProductName" "${PRODUCT_NAME}"
|
||||||
|
VIAddVersionKey "FileVersion" "${PRODUCT_VERSION}"
|
||||||
|
VIAddVersionKey "ProductVersion" "${PRODUCT_VERSION}"
|
||||||
|
VIAddVersionKey "LegalCopyright" "Copyright 2009 by Christian Dywan"
|
||||||
|
VIAddVersionKey "FileDescription" "${PRODUCT_NAME} Installer"
|
||||||
|
|
||||||
|
BrandingText "$(^NAME) installer (NSIS ${NSIS_VERSION})"
|
||||||
|
InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"
|
||||||
|
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
|
||||||
|
SetCompressor /SOLID lzma
|
||||||
|
ShowInstDetails hide
|
||||||
|
ShowUnInstDetails hide
|
||||||
|
XPStyle on
|
||||||
|
OutFile "${PRODUCT_NAME}-${PRODUCT_VERSION}_setup.exe"
|
||||||
|
|
||||||
|
Var Answer
|
||||||
|
Var UserName
|
||||||
|
Var StartmenuFolder
|
||||||
|
Var UNINSTDIR
|
||||||
|
Var DefaultBrowser
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;
|
||||||
|
; MUI Settings ;
|
||||||
|
;;;;;;;;;;;;;;;;
|
||||||
|
!include "MUI2.nsh"
|
||||||
|
|
||||||
|
!define MUI_ABORTWARNING
|
||||||
|
!define MUI_ICON "midori.ico"
|
||||||
|
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall-full.ico"
|
||||||
|
|
||||||
|
; Welcome page
|
||||||
|
!insertmacro MUI_PAGE_WELCOME
|
||||||
|
; License page
|
||||||
|
;!define MUI_LICENSEPAGE_RADIOBUTTONS
|
||||||
|
!insertmacro MUI_PAGE_LICENSE "${RESOURCEDIR}\COPYING"
|
||||||
|
; Components page
|
||||||
|
!insertmacro MUI_PAGE_COMPONENTS
|
||||||
|
; Directory page
|
||||||
|
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE OnDirLeave
|
||||||
|
!insertmacro MUI_PAGE_DIRECTORY
|
||||||
|
; Start menu page
|
||||||
|
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "Midori"
|
||||||
|
!define MUI_STARTMENUPAGE_REGISTRY_ROOT HKLM
|
||||||
|
!define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}"
|
||||||
|
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
|
||||||
|
!insertmacro MUI_PAGE_STARTMENU ${PRODUCT_NAME} "$StartmenuFolder"
|
||||||
|
; Instfiles page
|
||||||
|
!insertmacro MUI_PAGE_INSTFILES
|
||||||
|
; Finish page
|
||||||
|
!define MUI_FINISHPAGE_RUN "${PRODUCT_EXE}"
|
||||||
|
!define MUI_FINISHPAGE_RUN_NOTCHECKED
|
||||||
|
!define MUI_FINISHPAGE_NOREBOOTSUPPORT
|
||||||
|
!insertmacro MUI_PAGE_FINISH
|
||||||
|
|
||||||
|
; Uninstaller page
|
||||||
|
!insertmacro MUI_UNPAGE_CONFIRM
|
||||||
|
!insertmacro MUI_UNPAGE_INSTFILES
|
||||||
|
!insertmacro MUI_UNPAGE_FINISH
|
||||||
|
|
||||||
|
; Language file
|
||||||
|
!insertmacro MUI_LANGUAGE "English"
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; Sections and InstTypes ;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
InstType "Full"
|
||||||
|
InstType "Minimal"
|
||||||
|
|
||||||
|
Section "!Program Files" SEC01
|
||||||
|
SectionIn RO 1 2
|
||||||
|
SetOverwrite ifnewer
|
||||||
|
|
||||||
|
SetOutPath "$INSTDIR"
|
||||||
|
File "${RESOURCEDIR}\*"
|
||||||
|
|
||||||
|
SetOutPath "$INSTDIR\bin"
|
||||||
|
File /r "${RESOURCEDIR}\bin\*"
|
||||||
|
|
||||||
|
SetOutPath "$INSTDIR\etc"
|
||||||
|
File /r "${RESOURCEDIR}\etc\*"
|
||||||
|
|
||||||
|
SetOutPath "$INSTDIR\lib"
|
||||||
|
File /r /x "midori" "${RESOURCEDIR}\lib\*"
|
||||||
|
|
||||||
|
SetOutPath "$INSTDIR\share"
|
||||||
|
File /r /x "locale" /x "user" /x "Tango" "${RESOURCEDIR}\share\*"
|
||||||
|
|
||||||
|
SetOutPath "$INSTDIR\share\icons\Tango"
|
||||||
|
File "${RESOURCEDIR}\share\icons\Tango\index.theme"
|
||||||
|
|
||||||
|
SetOutPath "$INSTDIR"
|
||||||
|
CreateShortCut "$INSTDIR\Midori.lnk" "${PRODUCT_EXE}"
|
||||||
|
|
||||||
|
!insertmacro MUI_STARTMENU_WRITE_BEGIN ${PRODUCT_NAME}
|
||||||
|
CreateDirectory "$SMPROGRAMS\$StartmenuFolder"
|
||||||
|
CreateShortCut "$SMPROGRAMS\$StartmenuFolder\Midori.lnk" "${PRODUCT_EXE}"
|
||||||
|
!insertmacro MUI_STARTMENU_WRITE_END
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section "Extensions" SEC04
|
||||||
|
SectionIn 1
|
||||||
|
SetOverwrite ifnewer
|
||||||
|
SetOutPath "$INSTDIR\lib"
|
||||||
|
File /r "${RESOURCEDIR}\lib\midori"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section "Language Files" SEC02
|
||||||
|
SectionIn 1
|
||||||
|
SetOutPath "$INSTDIR\share"
|
||||||
|
File /r "${RESOURCEDIR}\share\locale"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section "FAQ" SEC06
|
||||||
|
SectionIn 1
|
||||||
|
SetOutPath "$INSTDIR\share\doc\midori"
|
||||||
|
File "${RESOURCEDIR}\share\doc\midori\faq.css"
|
||||||
|
File "${RESOURCEDIR}\share\doc\midori\faq.html"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
!macro InstallTangoIconRenameSmall OPath IPath
|
||||||
|
File "/oname=16x16\${OPath}.png" "${RESOURCEDIR}\share\icons\Tango\16x16\${IPath}.png"
|
||||||
|
File "/oname=22x22\${OPath}.png" "${RESOURCEDIR}\share\icons\Tango\22x22\${IPath}.png"
|
||||||
|
File "/oname=32x32\${OPath}.png" "${RESOURCEDIR}\share\icons\Tango\32x32\${IPath}.png"
|
||||||
|
!macroend
|
||||||
|
|
||||||
|
!macro InstallTangoIconRename OPath IPath
|
||||||
|
!insertmacro InstallTangoIconRenameSmall ${OPath} ${IPath}
|
||||||
|
File "/oname=48x48\${OPath}.png" "${RESOURCEDIR}\share\icons\Tango\48x48\${IPath}.png"
|
||||||
|
File /nonfatal "/oname=64x64\${OPath}.png" "${RESOURCEDIR}\share\icons\Tango\64x64\${IPath}.png"
|
||||||
|
File /nonfatal "/oname=72x72\${OPath}.png" "${RESOURCEDIR}\share\icons\Tango\72x72\${IPath}.png"
|
||||||
|
File /nonfatal "/oname=96x96\${OPath}.png" "${RESOURCEDIR}\share\icons\Tango\96x96\${IPath}.png"
|
||||||
|
File /nonfatal "/oname=128x128\${OPath}.png" "${RESOURCEDIR}\share\icons\Tango\128x128\${IPath}.png"
|
||||||
|
File "/oname=scalable\${OPath}.svg" "${RESOURCEDIR}\share\icons\Tango\scalable\${IPath}.svg"
|
||||||
|
File /nonfatal "/oname=scalable\${OPath}.icon" "${RESOURCEDIR}\share\icons\Tango\scalable\${IPath}.icon"
|
||||||
|
!macroend
|
||||||
|
|
||||||
|
!macro InstallTangoIconSmall IconPath
|
||||||
|
!insertmacro InstallTangoIconRenameSmall ${IconPath} ${IconPath}
|
||||||
|
!macroend
|
||||||
|
|
||||||
|
!macro InstallTangoIcon IconPath
|
||||||
|
!insertmacro InstallTangoIconRename ${IconPath} ${IconPath}
|
||||||
|
!macroend
|
||||||
|
|
||||||
|
!macro CreateTangoSectionsSmall SectionPath
|
||||||
|
CreateDirectory "$INSTDIR\share\icons\Tango\16x16\${SectionPath}"
|
||||||
|
CreateDirectory "$INSTDIR\share\icons\Tango\22x22\${SectionPath}"
|
||||||
|
CreateDirectory "$INSTDIR\share\icons\Tango\32x32\${SectionPath}"
|
||||||
|
!macroend
|
||||||
|
|
||||||
|
!macro CreateTangoSections SectionPath
|
||||||
|
!insertmacro CreateTangoSectionsSmall ${SectionPath}
|
||||||
|
CreateDirectory "$INSTDIR\share\icons\Tango\48x48\${SectionPath}"
|
||||||
|
CreateDirectory "$INSTDIR\share\icons\Tango\64x64\${SectionPath}"
|
||||||
|
CreateDirectory "$INSTDIR\share\icons\Tango\72x72\${SectionPath}"
|
||||||
|
CreateDirectory "$INSTDIR\share\icons\Tango\96x96\${SectionPath}"
|
||||||
|
CreateDirectory "$INSTDIR\share\icons\Tango\128x128\${SectionPath}"
|
||||||
|
CreateDirectory "$INSTDIR\share\icons\Tango\scalable\${SectionPath}"
|
||||||
|
!macroend
|
||||||
|
|
||||||
|
Section "Tango icons" SEC07
|
||||||
|
SectionIn 1
|
||||||
|
SetOutPath "$INSTDIR\share\icons\Tango"
|
||||||
|
|
||||||
|
!insertmacro CreateTangoSections "actions"
|
||||||
|
!insertmacro CreateTangoSectionsSmall "animations"
|
||||||
|
!insertmacro CreateTangoSections "apps"
|
||||||
|
!insertmacro CreateTangoSections "categories"
|
||||||
|
!insertmacro CreateTangoSections "devices"
|
||||||
|
!insertmacro CreateTangoSections "emblems"
|
||||||
|
!insertmacro CreateTangoSections "emotes"
|
||||||
|
!insertmacro CreateTangoSections "mimetypes"
|
||||||
|
!insertmacro CreateTangoSections "places"
|
||||||
|
!insertmacro CreateTangoSections "status"
|
||||||
|
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-add"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-bold"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-cancel"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-cancel"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-clear"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-copy"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-cut"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-delete"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-find"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-fullscreen"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-go-back-ltr"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-go-back-ltr"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-go-down"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-go-forward-ltr"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-go-forward-ltr"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-go-up"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-goto-first-ltr"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-goto-first-ltr"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-goto-last-ltr"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-goto-last-ltr"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-home"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-indent-ltr"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-indent-rtl"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-italic"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-jump-to-ltr"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-jump-to-ltr"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-media-next-ltr"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-media-next-rtl"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-media-previous-ltr"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-media-previous-rtl"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-open"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-paste"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-print"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-properties"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-redo-ltr"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-refresh"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-remove"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-save"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-save-as"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-select-all"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-stop"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-underline"
|
||||||
|
!insertmacro InstallTangoIcon "actions\gtk-undo-ltr"
|
||||||
|
!insertmacro InstallTangoIcon "actions\stock_add-bookmark"
|
||||||
|
!insertmacro InstallTangoIcon "actions\stock_new-tab"
|
||||||
|
!insertmacro InstallTangoIcon "actions\stock_new-window"
|
||||||
|
!insertmacro InstallTangoIconSmall "animations\process-working"
|
||||||
|
!insertmacro InstallTangoIcon "apps\gnome-settings-theme"
|
||||||
|
!insertmacro InstallTangoIcon "apps\gtk-help"
|
||||||
|
!insertmacro InstallTangoIcon "apps\terminal"
|
||||||
|
!insertmacro InstallTangoIcon "apps\web-browser"
|
||||||
|
!insertmacro InstallTangoIcon "categories\gtk-preferences"
|
||||||
|
#!insertmacro InstallTangoIcon "cookie-manager"
|
||||||
|
#!insertmacro InstallTangoIcon "document-open-recent"
|
||||||
|
#!insertmacro InstallTangoIcon "extention"
|
||||||
|
#!insertmacro InstallTangoIcon "feed-panel"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-about"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-close"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-convert"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-dialog-authentication"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-dnd-multiple"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-edit"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-execute"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-file"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-index"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-info"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-ok"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-orientation-portait"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-quit"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-select-color"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-select-font"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-sort-ascending"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-spell-check"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-undelete"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-yes"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-zoom-100"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-zoom-in"
|
||||||
|
#!insertmacro InstallTangoIcon "gtk-zoom-out"
|
||||||
|
!insertmacro InstallTangoIcon "mimetypes\gnome-mime-application-x-shockwave-flash"
|
||||||
|
!insertmacro InstallTangoIcon "mimetypes\gnome-mime-image"
|
||||||
|
!insertmacro InstallTangoIcon "mimetypes\package"
|
||||||
|
!insertmacro InstallTangoIcon "mimetypes\stock_script"
|
||||||
|
!insertmacro InstallTangoIcon "mimetypes\vcard"
|
||||||
|
#!insertmacro InstallTangoIcon "news-feed"
|
||||||
|
#!insertmacro InstallTangoIcon "place-holder"
|
||||||
|
!insertmacro InstallTangoIcon "places\gnome-stock-trash"
|
||||||
|
!insertmacro InstallTangoIcon "places\gtk-directory"
|
||||||
|
!insertmacro InstallTangoIcon "places\gtk-network"
|
||||||
|
!insertmacro InstallTangoIcon "status\gtk-dialog-error"
|
||||||
|
!insertmacro InstallTangoIcon "status\gtk-dialog-info"
|
||||||
|
!insertmacro InstallTangoIcon "status\gtk-dialog-warning"
|
||||||
|
!insertmacro InstallTangoIcon "status\gtk-missing-image"
|
||||||
|
!insertmacro InstallTangoIcon "status\network-offline"
|
||||||
|
#!insertmacro InstallTangoIcon "stock_bookmark"
|
||||||
|
#!insertmacro InstallTangoIcon "stock_mail-send"
|
||||||
|
#!insertmacro InstallTangoIcon "tab-panel"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section "Desktop Shortcuts" SEC03
|
||||||
|
SectionIn 1
|
||||||
|
CreateShortCut "$DESKTOP\Midori.lnk" "${PRODUCT_EXE}"
|
||||||
|
CreateShortCut "$QUICKLAUNCH\Midori.lnk" "${PRODUCT_EXE}"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section "Default Browser" SEC05
|
||||||
|
SectionIn 1
|
||||||
|
StrCpy $DefaultBrowser "yes"
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section -AdditionalIcons
|
||||||
|
SetOutPath $INSTDIR
|
||||||
|
!insertmacro MUI_STARTMENU_WRITE_BEGIN ${PRODUCT_NAME}
|
||||||
|
WriteIniStr "$INSTDIR\Website.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
|
||||||
|
CreateShortCut "$SMPROGRAMS\$StartmenuFolder\Website.lnk" "${PRODUCT_EXE}" \
|
||||||
|
"${PRODUCT_WEB_SITE}" "${PRODUCT_EXE}"
|
||||||
|
CreateShortCut "$SMPROGRAMS\$StartmenuFolder\Uninstall.lnk" "${UNINSTALL_EXE}"
|
||||||
|
CreateShortCut "$SMPROGRAMS\$StartmenuFolder\Make Default.lnk" "${UNINSTALL_EXE}" \
|
||||||
|
"/S /MAKEDEFAULT" "${PRODUCT_EXE}"
|
||||||
|
!insertmacro MUI_STARTMENU_WRITE_END
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section -Post
|
||||||
|
WriteUninstaller "${UNINSTALL_EXE}"
|
||||||
|
WriteRegStr SHCTX "${PRODUCT_DIR_REGKEY}" Path "$INSTDIR"
|
||||||
|
WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "StartMenu" "$SMPROGRAMS\$StartmenuFolder"
|
||||||
|
${if} $Answer == "yes" ; if user is admin
|
||||||
|
WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
|
||||||
|
WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "UninstallString" "${UNINSTALL_EXE}"
|
||||||
|
WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "DisplayIcon" "${PRODUCT_EXE}"
|
||||||
|
WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
|
||||||
|
WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
|
||||||
|
WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "URLUpdateInfo" "${PRODUCT_WEB_SITE}"
|
||||||
|
WriteRegStr SHCTX "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
|
||||||
|
WriteRegDWORD SHCTX "${PRODUCT_UNINST_KEY}" "NoModify" 0x00000001
|
||||||
|
WriteRegDWORD SHCTX "${PRODUCT_UNINST_KEY}" "NoRepair" 0x00000001
|
||||||
|
|
||||||
|
WriteRegStr HKLM "${PRODUCT_BROWER_KEY}\MIDORI.EXE" "" "${PRODUCT_NAME}"
|
||||||
|
WriteRegStr HKLM "${PRODUCT_BROWER_KEY}\MIDORI.EXE\DefaultIcon" "" "${PRODUCT_EXE},0"
|
||||||
|
WriteRegStr HKLM "${PRODUCT_BROWER_KEY}\MIDORI.EXE\shell\open\command" "" "${PRODUCT_EXE}"
|
||||||
|
WriteRegStr HKLM "${PRODUCT_BROWER_KEY}\MIDORI.EXE\InstallInfo" "HideIconsCommand" '"${UNINSTALL_EXE}" /S /HIDE'
|
||||||
|
WriteRegDWORD HKLM "${PRODUCT_BROWER_KEY}\MIDORI.EXE\InstallInfo" "IconsVisible" 0x00000000
|
||||||
|
WriteRegStr HKLM "${PRODUCT_BROWER_KEY}\MIDORI.EXE\InstallInfo" "ReinstallCommand" '"${UNINSTALL_EXE}" /S /MAKEDEFAULT'
|
||||||
|
WriteRegStr HKLM "${PRODUCT_BROWER_KEY}\MIDORI.EXE\InstallInfo" "ShowIconsCommand" '"${UNINSTALL_EXE}" /S /SHOW'
|
||||||
|
${endif}
|
||||||
|
|
||||||
|
${if} $DefaultBrowser == "yes"
|
||||||
|
${if} $Answer == "yes" ; if user is admin
|
||||||
|
WriteRegDWORD HKLM "${PRODUCT_BROWER_KEY}\MIDORI.EXE\InstallInfo" "IconsVisible" 0x00000001
|
||||||
|
${endif}
|
||||||
|
WriteRegStr HKCU "${PRODUCT_BROWER_KEY}" "" "MIDORI.EXE"
|
||||||
|
WriteRegStr HKCR "http\DefaultIcon" "" "${PRODUCT_EXE},0"
|
||||||
|
WriteRegStr HKCR "http\shell\open\command" "" '${PRODUCT_EXE} "%1"'
|
||||||
|
WriteRegStr HKCR "https\DefaultIcon" "" "${PRODUCT_EXE},0"
|
||||||
|
WriteRegStr HKCR "https\shell\open\command" "" '${PRODUCT_EXE} "%1"'
|
||||||
|
${endif}
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
Section Uninstall
|
||||||
|
Delete "$INSTDIR\Website.url"
|
||||||
|
Delete "${UNINSTALL_EXE}"
|
||||||
|
Delete "$INSTDIR\COPYING"
|
||||||
|
Delete "$INSTDIR\AUTHORS"
|
||||||
|
Delete "$INSTDIR\Midori.lnk"
|
||||||
|
|
||||||
|
; delete start menu entry
|
||||||
|
ReadRegStr $0 SHCTX "${PRODUCT_UNINST_KEY}" "StartMenu"
|
||||||
|
RMDir /r "$0"
|
||||||
|
|
||||||
|
Delete "$QUICKLAUNCH\Midori.lnk"
|
||||||
|
Delete "$DESKTOP\Midori.lnk"
|
||||||
|
|
||||||
|
RMDir /r "$INSTDIR\bin"
|
||||||
|
RMDir /r "$INSTDIR\etc"
|
||||||
|
RMDir /r "$INSTDIR\lib"
|
||||||
|
RMDir /r "$INSTDIR\share"
|
||||||
|
RMDir "$INSTDIR"
|
||||||
|
|
||||||
|
DeleteRegKey SHCTX "${PRODUCT_UNINST_KEY}"
|
||||||
|
DeleteRegKey HKCU "${PRODUCT_UNINST_KEY}"
|
||||||
|
DeleteRegKey SHCTX "${PRODUCT_DIR_REGKEY}"
|
||||||
|
DeleteRegKey HKCU "${PRODUCT_DIR_REGKEY}"
|
||||||
|
DeleteRegKey HKLM "${PRODUCT_BROWER_KEY}\MIDORI.EXE"
|
||||||
|
|
||||||
|
SetAutoClose true
|
||||||
|
SectionEnd
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; Section descriptions ;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${SEC01} "Required program files. You cannot skip these files."
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${SEC02} "Various translations of Midori's interface."
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${SEC03} "Create shortcuts for Midori on the desktop and in the Quicklaunch Bar"
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${SEC04} "Available plugins like 'Advertisement Blocker', 'Form history filler' and 'Mouse Gestures'."
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${SEC05} "Make Midori the default browser."
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${SEC06} "User manual of the Midori application."
|
||||||
|
!insertmacro MUI_DESCRIPTION_TEXT ${SEC07} "Better looking icons from the Tango icon theme."
|
||||||
|
!insertmacro MUI_FUNCTION_DESCRIPTION_END
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; helper functions ;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
; (from http://jabref.svn.sourceforge.net/viewvc/jabref/trunk/jabref/src/windows/nsis/setup.nsi)
|
||||||
|
!macro IsUserAdmin Result UName
|
||||||
|
ClearErrors
|
||||||
|
UserInfo::GetName
|
||||||
|
IfErrors Win9x
|
||||||
|
Pop $0
|
||||||
|
StrCpy ${UName} $0
|
||||||
|
UserInfo::GetAccountType
|
||||||
|
Pop $1
|
||||||
|
${if} $1 == "Admin"
|
||||||
|
StrCpy ${Result} "yes"
|
||||||
|
${else}
|
||||||
|
StrCpy ${Result} "no"
|
||||||
|
${endif}
|
||||||
|
Goto done
|
||||||
|
|
||||||
|
Win9x:
|
||||||
|
StrCpy ${Result} "yes"
|
||||||
|
done:
|
||||||
|
!macroend
|
||||||
|
|
||||||
|
; (from http://nsis.sourceforge.net/GetOptions)
|
||||||
|
Function un.GetOptions
|
||||||
|
!define GetOptions `!insertmacro GetOptionsCall`
|
||||||
|
|
||||||
|
!macro GetOptionsCall _PARAMETERS _OPTION _RESULT
|
||||||
|
Push `${_PARAMETERS}`
|
||||||
|
Push `${_OPTION}`
|
||||||
|
Call un.GetOptions
|
||||||
|
Pop ${_RESULT}
|
||||||
|
!macroend
|
||||||
|
|
||||||
|
Exch $1
|
||||||
|
Exch
|
||||||
|
Exch $0
|
||||||
|
Exch
|
||||||
|
Push $2
|
||||||
|
Push $3
|
||||||
|
Push $4
|
||||||
|
Push $5
|
||||||
|
Push $6
|
||||||
|
Push $7
|
||||||
|
ClearErrors
|
||||||
|
|
||||||
|
StrCpy $2 $1 '' 1
|
||||||
|
StrCpy $1 $1 1
|
||||||
|
StrLen $3 $2
|
||||||
|
StrCpy $7 0
|
||||||
|
|
||||||
|
begin:
|
||||||
|
StrCpy $4 -1
|
||||||
|
StrCpy $6 ''
|
||||||
|
|
||||||
|
quote:
|
||||||
|
IntOp $4 $4 + 1
|
||||||
|
StrCpy $5 $0 1 $4
|
||||||
|
StrCmp $5$7 '0' notfound
|
||||||
|
StrCmp $5 '' trimright
|
||||||
|
StrCmp $5 '"' 0 +7
|
||||||
|
StrCmp $6 '' 0 +3
|
||||||
|
StrCpy $6 '"'
|
||||||
|
goto quote
|
||||||
|
StrCmp $6 '"' 0 +3
|
||||||
|
StrCpy $6 ''
|
||||||
|
goto quote
|
||||||
|
StrCmp $5 `'` 0 +7
|
||||||
|
StrCmp $6 `` 0 +3
|
||||||
|
StrCpy $6 `'`
|
||||||
|
goto quote
|
||||||
|
StrCmp $6 `'` 0 +3
|
||||||
|
StrCpy $6 ``
|
||||||
|
goto quote
|
||||||
|
StrCmp $5 '`' 0 +7
|
||||||
|
StrCmp $6 '' 0 +3
|
||||||
|
StrCpy $6 '`'
|
||||||
|
goto quote
|
||||||
|
StrCmp $6 '`' 0 +3
|
||||||
|
StrCpy $6 ''
|
||||||
|
goto quote
|
||||||
|
StrCmp $6 '"' quote
|
||||||
|
StrCmp $6 `'` quote
|
||||||
|
StrCmp $6 '`' quote
|
||||||
|
StrCmp $5 $1 0 quote
|
||||||
|
StrCmp $7 0 trimleft trimright
|
||||||
|
|
||||||
|
trimleft:
|
||||||
|
IntOp $4 $4 + 1
|
||||||
|
StrCpy $5 $0 $3 $4
|
||||||
|
StrCmp $5 '' notfound
|
||||||
|
StrCmp $5 $2 0 quote
|
||||||
|
IntOp $4 $4 + $3
|
||||||
|
StrCpy $0 $0 '' $4
|
||||||
|
StrCpy $4 $0 1
|
||||||
|
StrCmp $4 ' ' 0 +3
|
||||||
|
StrCpy $0 $0 '' 1
|
||||||
|
goto -3
|
||||||
|
StrCpy $7 1
|
||||||
|
goto begin
|
||||||
|
|
||||||
|
trimright:
|
||||||
|
StrCpy $0 $0 $4
|
||||||
|
StrCpy $4 $0 1 -1
|
||||||
|
StrCmp $4 ' ' 0 +3
|
||||||
|
StrCpy $0 $0 -1
|
||||||
|
goto -3
|
||||||
|
StrCpy $3 $0 1
|
||||||
|
StrCpy $4 $0 1 -1
|
||||||
|
StrCmp $3 $4 0 end
|
||||||
|
StrCmp $3 '"' +3
|
||||||
|
StrCmp $3 `'` +2
|
||||||
|
StrCmp $3 '`' 0 end
|
||||||
|
StrCpy $0 $0 -1 1
|
||||||
|
goto end
|
||||||
|
|
||||||
|
notfound:
|
||||||
|
SetErrors
|
||||||
|
StrCpy $0 ''
|
||||||
|
|
||||||
|
end:
|
||||||
|
Pop $7
|
||||||
|
Pop $6
|
||||||
|
Pop $5
|
||||||
|
Pop $4
|
||||||
|
Pop $3
|
||||||
|
Pop $2
|
||||||
|
Pop $1
|
||||||
|
Exch $0
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
|
Function .onInit
|
||||||
|
StrCpy "$StartmenuFolder" "Midori"
|
||||||
|
|
||||||
|
; (from http://jabref.svn.sourceforge.net/viewvc/jabref/trunk/jabref/src/windows/nsis/setup.nsi)
|
||||||
|
; If the user does *not* have administrator privileges, abort
|
||||||
|
StrCpy $Answer ""
|
||||||
|
StrCpy $UserName ""
|
||||||
|
!insertmacro IsUserAdmin $Answer $UserName ; macro from LyXUtils.nsh
|
||||||
|
${if} $Answer == "yes"
|
||||||
|
SetShellVarContext all ; set that e.g. shortcuts will be created for all users
|
||||||
|
${else}
|
||||||
|
SetShellVarContext current
|
||||||
|
; TODO is this really what we want? $PROGRAMFILES is not much better because
|
||||||
|
; probably the unprivileged user can't write it anyways
|
||||||
|
StrCpy $INSTDIR "$PROFILE\$(^Name)"
|
||||||
|
${endif}
|
||||||
|
|
||||||
|
; prevent running multiple instances of the installer
|
||||||
|
System::Call 'kernel32::CreateMutexA(i 0, i 0, t "midori_installer") i .r1 ?e'
|
||||||
|
Pop $R0
|
||||||
|
StrCmp $R0 0 +3
|
||||||
|
MessageBox MB_OK|MB_ICONEXCLAMATION "The installer is already running." /SD IDOK
|
||||||
|
Abort
|
||||||
|
; warn about a new install over an existing installation
|
||||||
|
ReadRegStr $R0 SHCTX "${PRODUCT_UNINST_KEY}" "UninstallString"
|
||||||
|
StrCmp $R0 "" finish
|
||||||
|
|
||||||
|
MessageBox MB_YESNO|MB_ICONEXCLAMATION \
|
||||||
|
"Midori has already been installed. $\nDo you want to remove the previous version before installing $(^Name) ?" \
|
||||||
|
/SD IDYES IDYES remove IDNO finish
|
||||||
|
|
||||||
|
remove:
|
||||||
|
; run the uninstaller
|
||||||
|
ClearErrors
|
||||||
|
; we read the installation path of the old installation from the Registry
|
||||||
|
ReadRegStr $UNINSTDIR SHCTX "${PRODUCT_DIR_REGKEY}" "Path"
|
||||||
|
IfSilent dosilent nonsilent
|
||||||
|
dosilent:
|
||||||
|
ExecWait '$R0 /S _?=$UNINSTDIR' ;Do not copy the uninstaller to a temp file
|
||||||
|
Goto finish
|
||||||
|
nonsilent:
|
||||||
|
ExecWait '$R0 _?=$UNINSTDIR' ;Do not copy the uninstaller to a temp file
|
||||||
|
finish:
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
|
Function un.onInit
|
||||||
|
StrCpy $Answer ""
|
||||||
|
!insertmacro IsUserAdmin $Answer $UserName
|
||||||
|
${if} $Answer == "yes"
|
||||||
|
SetShellVarContext all
|
||||||
|
${else}
|
||||||
|
SetShellVarContext current
|
||||||
|
${endif}
|
||||||
|
|
||||||
|
${GetOptions} "$CMDLINE" "/MAKEDEFAULT" $0
|
||||||
|
IfErrors 0 +2
|
||||||
|
goto makedefault_next
|
||||||
|
|
||||||
|
WriteRegStr HKCU "${PRODUCT_BROWER_KEY}" "" "MIDORI.EXE"
|
||||||
|
WriteRegStr HKCR "http\DefaultIcon" "" "${PRODUCT_EXE},0"
|
||||||
|
WriteRegStr HKCR "http\shell\open\command" "" '${PRODUCT_EXE} "%1"'
|
||||||
|
WriteRegStr HKCR "https\DefaultIcon" "" "${PRODUCT_EXE},0"
|
||||||
|
WriteRegStr HKCR "https\shell\open\command" "" '${PRODUCT_EXE} "%1"'
|
||||||
|
Abort
|
||||||
|
makedefault_next:
|
||||||
|
|
||||||
|
${GetOptions} "$CMDLINE" "/SHOW" $0
|
||||||
|
IfErrors 0 +2
|
||||||
|
goto show_next
|
||||||
|
|
||||||
|
${if} $Answer == "yes" ; if user is admin
|
||||||
|
WriteRegDWORD HKLM "${PRODUCT_BROWER_KEY}\MIDORI.EXE\InstallInfo" "IconsVisible" 0x00000001
|
||||||
|
${endif}
|
||||||
|
CreateShortCut "$DESKTOP\Midori.lnk" "${PRODUCT_EXE}"
|
||||||
|
CreateShortCut "$QUICKLAUNCH\Midori.lnk" "${PRODUCT_EXE}"
|
||||||
|
Abort
|
||||||
|
show_next:
|
||||||
|
|
||||||
|
${GetOptions} "$CMDLINE" "/HIDE" $0
|
||||||
|
IfErrors 0 +2
|
||||||
|
goto hide_next
|
||||||
|
|
||||||
|
${if} $Answer == "yes" ; if user is admin
|
||||||
|
WriteRegDWORD HKLM "${PRODUCT_BROWER_KEY}\MIDORI.EXE\InstallInfo" "IconsVisible" 0x00000000
|
||||||
|
${endif}
|
||||||
|
Delete "$QUICKLAUNCH\Midori.lnk"
|
||||||
|
Delete "$DESKTOP\Midori.lnk"
|
||||||
|
Abort
|
||||||
|
hide_next:
|
||||||
|
|
||||||
|
; If the user does *not* have administrator privileges, abort
|
||||||
|
${if} $Answer != "yes"
|
||||||
|
; check if the Midori has been installed with admin permisions
|
||||||
|
ReadRegStr $0 HKLM "${PRODUCT_UNINST_KEY}" "Publisher"
|
||||||
|
${if} $0 != ""
|
||||||
|
MessageBox MB_OK|MB_ICONSTOP "You need administrator privileges to uninstall Midori!" \
|
||||||
|
/SD IDOK
|
||||||
|
Abort
|
||||||
|
${endif}
|
||||||
|
${endif}
|
||||||
|
FunctionEnd
|
||||||
|
|
||||||
|
Function OnDirLeave
|
||||||
|
ClearErrors
|
||||||
|
SetOutPath "$INSTDIR" ; what about IfError creating $INSTDIR?
|
||||||
|
GetTempFileName $1 "$INSTDIR" ; creates tmp file (or fails)
|
||||||
|
FileOpen $0 "$1" "w" ; error to open?
|
||||||
|
FileWriteByte $0 "0"
|
||||||
|
IfErrors notPossible possible
|
||||||
|
|
||||||
|
notPossible:
|
||||||
|
RMDir "$INSTDIR" ; removes folder if empty
|
||||||
|
MessageBox MB_OK "The given directory is not writeable. Please choose another one!" /SD IDOK
|
||||||
|
Abort
|
||||||
|
possible:
|
||||||
|
FileClose $0
|
||||||
|
Delete "$1"
|
||||||
|
FunctionEnd
|
72
win32/x86-mingw32-opensuse/install.sh
Normal file
72
win32/x86-mingw32-opensuse/install.sh
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Copyright (C) 2010-2011 Peter de Ridder <peter@xfce.org>
|
||||||
|
#
|
||||||
|
# This library is free software; you can redistribute it and/or
|
||||||
|
# modify it under the terms of the GNU Lesser General Public
|
||||||
|
# License as published by the Free Software Foundation; either
|
||||||
|
# version 2.1 of the License, or (at your option) any later version.
|
||||||
|
#
|
||||||
|
# See the file COPYING for the full license text.
|
||||||
|
|
||||||
|
# config variables
|
||||||
|
REPO_URL=http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_11.2
|
||||||
|
REPO_ARCH=noarch
|
||||||
|
DOWNLOAD_PATH=~/dev/mingw/packages/opensuse
|
||||||
|
BUILD_PATH=~/tmp/opensuse
|
||||||
|
INSTALL_PATH=~/dev/mingw/mingw32
|
||||||
|
|
||||||
|
if [[ "$1" == "update" ]]
|
||||||
|
then
|
||||||
|
UPDATE=yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
# create download and build directory
|
||||||
|
mkdir -p $DOWNLOAD_PATH
|
||||||
|
mkdir -p $BUILD_PATH
|
||||||
|
|
||||||
|
rm $DOWNLOAD_PATH/repomd.xml
|
||||||
|
wget -nc $REPO_URL/repodata/repomd.xml -P $DOWNLOAD_PATH || exit 1
|
||||||
|
OTHER_FILE=`xmlgrep -c -f $DOWNLOAD_PATH/repomd.xml repomd.data:type=other.location | sed 's/.*href="\([^"]*\)".*/\1/'`
|
||||||
|
|
||||||
|
wget -nc $REPO_URL/$OTHER_FILE -O $DOWNLOAD_PATH/other.xml.gz || exit 1
|
||||||
|
rm $DOWNLOAD_PATH/other.xml
|
||||||
|
#gunzip -N $DOWNLOAD_PATH/`basename $OTHER_FILE`
|
||||||
|
gunzip -N $DOWNLOAD_PATH/other.xml
|
||||||
|
|
||||||
|
rm packages.version
|
||||||
|
touch packages.version
|
||||||
|
|
||||||
|
# downlaod all packages
|
||||||
|
while read line
|
||||||
|
do
|
||||||
|
VERSION=`xmlgrep -c -f $DOWNLOAD_PATH/other.xml otherdata.package:name="$line":arch="$REPO_ARCH" | awk -F\< '{print $2}' |sed -e 'h' -e 's/^.*ver="\([^"]*\)".*$/\1/p' -e 'g' -e 's/^.*rel="\([^"]*\)".*$/\1/' | sed -e N -e 's/\n/-/' | sort -V -r | head -n 1`
|
||||||
|
FILE=$line-$VERSION.$REPO_ARCH.rpm
|
||||||
|
test "$UPDATE" == yes || echo $FILE >> packages.version
|
||||||
|
if [ ! -f $DOWNLOAD_PATH/$FILE ]
|
||||||
|
then
|
||||||
|
test "$UPDATE" == yes && echo $FILE >> packages.version
|
||||||
|
wget -nc $REPO_URL/$REPO_ARCH/$FILE -P $DOWNLOAD_PATH
|
||||||
|
fi
|
||||||
|
done < packages.list
|
||||||
|
|
||||||
|
# convert and install packages
|
||||||
|
while read line
|
||||||
|
do
|
||||||
|
pushd $BUILD_PATH
|
||||||
|
# extract rpm
|
||||||
|
rpm2cpio $DOWNLOAD_PATH/$line | cpio -i -d
|
||||||
|
# convert pkgconfig files
|
||||||
|
if [ -d $BUILD_PATH/usr/i686-pc-mingw32/sys-root/mingw/lib/pkgconfig ]
|
||||||
|
then
|
||||||
|
sed -i -e 's@^prefix=.*@prefix='$INSTALL_PATH'@' -e 's@/usr/i686-pc-mingw32/sys-root/mingw@${prefix}@' $BUILD_PATH/usr/i686-pc-mingw32/sys-root/mingw/lib/pkgconfig/*.pc
|
||||||
|
fi
|
||||||
|
# install the package
|
||||||
|
cp -rf $BUILD_PATH/usr/i686-pc-mingw32/sys-root/mingw/* $INSTALL_PATH/
|
||||||
|
# remove the extracted file
|
||||||
|
rm -rf $BUILD_PATH/usr
|
||||||
|
popd
|
||||||
|
done < packages.version
|
||||||
|
|
||||||
|
# remove build directory
|
||||||
|
rm -rf $BUILD_PATH
|
79
win32/x86-mingw32-opensuse/packages.list
Normal file
79
win32/x86-mingw32-opensuse/packages.list
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
This file is licensed under the terms of the LGPL 2.1, see the file COPYING.
|
||||||
|
|
||||||
|
mingw32-atk
|
||||||
|
mingw32-atk-devel
|
||||||
|
mingw32-cairo-devel
|
||||||
|
mingw32-dbus-1
|
||||||
|
mingw32-dbus-1-glib
|
||||||
|
mingw32-dbus-1-glib-devel
|
||||||
|
mingw32-enchant
|
||||||
|
mingw32-enchant-devel
|
||||||
|
mingw32-fontconfig
|
||||||
|
mingw32-fontconfig-devel
|
||||||
|
mingw32-freetype
|
||||||
|
mingw32-freetype-devel
|
||||||
|
mingw32-gcc-c++
|
||||||
|
mingw32-gcc
|
||||||
|
mingw32-gdk-pixbuf
|
||||||
|
mingw32-gdk-pixbuf-devel
|
||||||
|
mingw32-gettext-runtime
|
||||||
|
mingw32-gettext-tools
|
||||||
|
mingw32-glib2
|
||||||
|
mingw32-glib2-devel
|
||||||
|
mingw32-gst-plugins-base-devel
|
||||||
|
mingw32-gstreamer-devel
|
||||||
|
mingw32-gtk2
|
||||||
|
mingw32-gtk2-devel
|
||||||
|
mingw32-hunspell
|
||||||
|
mingw32-hunspell-devel
|
||||||
|
mingw32-libexpat
|
||||||
|
mingw32-libexpat-devel
|
||||||
|
mingw32-libgcc
|
||||||
|
mingw32-libgcrypt
|
||||||
|
mingw32-libgcrypt-devel
|
||||||
|
mingw32-libcairo2
|
||||||
|
mingw32-libgeoclue
|
||||||
|
mingw32-libgeoclue-devel
|
||||||
|
mingw32-libgnutls
|
||||||
|
mingw32-libgnutls-devel
|
||||||
|
mingw32-libgpg-error
|
||||||
|
mingw32-libgpg-error-devel
|
||||||
|
mingw32-libgstinterfaces
|
||||||
|
mingw32-libgstreamer
|
||||||
|
mingw32-libidn
|
||||||
|
mingw32-libidn-devel
|
||||||
|
mingw32-libjasper
|
||||||
|
mingw32-libjasper-devel
|
||||||
|
mingw32-libjpeg
|
||||||
|
mingw32-libjpeg-devel
|
||||||
|
mingw32-libopenssl
|
||||||
|
mingw32-libopenssl-devel
|
||||||
|
mingw32-libpng
|
||||||
|
mingw32-libpng-devel
|
||||||
|
mingw32-libsoup
|
||||||
|
mingw32-libsoup-devel
|
||||||
|
mingw32-libstdc++
|
||||||
|
mingw32-libsqlite
|
||||||
|
mingw32-libsqlite-devel
|
||||||
|
mingw32-libtasn1
|
||||||
|
mingw32-libtasn1-devel
|
||||||
|
mingw32-libtiff
|
||||||
|
mingw32-libtiff-devel
|
||||||
|
mingw32-libwebkit
|
||||||
|
mingw32-libwebkit-devel
|
||||||
|
mingw32-libxml2
|
||||||
|
mingw32-libxml2-devel
|
||||||
|
mingw32-libxslt
|
||||||
|
mingw32-libxslt-devel
|
||||||
|
mingw32-pango
|
||||||
|
mingw32-pango-devel
|
||||||
|
mingw32-pixman
|
||||||
|
mingw32-pixman-devel
|
||||||
|
mingw32-pthreads
|
||||||
|
mingw32-pthreads-devel
|
||||||
|
mingw32-shared-mime-info
|
||||||
|
mingw32-shared-mime-info-devel
|
||||||
|
mingw32-win_iconv
|
||||||
|
mingw32-win_iconv-devel
|
||||||
|
mingw32-zlib
|
||||||
|
mingw32-zlib-devel
|
Loading…
Reference in a new issue