Maran
12 years ago
5 changed files with 290 additions and 0 deletions
@ -0,0 +1,10 @@ |
|||
These scripts can be used for cross-compilation of Windows Electrum executables from Linux/Wine. |
|||
|
|||
Usage: |
|||
1. Copy content of this directory to /electrum-wine. |
|||
2. Install Wine (version 1.4 or 1.5+ works fine, 1.4.1 has bug). |
|||
3. Run "./build-wine.sh", it will download all dependencies. When you'll be asked, always leave default settings and press "Next >". |
|||
6. Build will create three separate versions in dist/ directory. One is "dist/electrum.exe", standalone compressed executable. Second one is directory "dist/electrum" containing uncompressed binaries, useful for comparsion with other builds. Third version is "electrum-setup.exe", NSIS-based installer of Electrum. |
|||
7. If you want to rebuild new version of Electrum, just change path to ZIP file in "build-wine.sh" and re-run script with "./build-wine.sh update". It will skip downloading all dependencie |
|||
|
|||
For more information contact: slush <info@bitcoin.cz> |
@ -0,0 +1,12 @@ |
|||
252a253,255 |
|||
> class NoZlib: |
|||
> def decompress(self, data): |
|||
> return data |
|||
253a257,259 |
|||
> def compress(self, data, lvl): |
|||
> return data |
|||
> |
|||
316c322 |
|||
< zlib = DummyZlib() |
|||
---
|
|||
> zlib = NoZlib() |
@ -0,0 +1,115 @@ |
|||
#!/bin/bash |
|||
|
|||
# call "./build-wine.sh" to build everything from scratch |
|||
# call "./build-wine.sh update" to skip building full environment (it re-download only Electrum) |
|||
|
|||
# You probably need to update only this link |
|||
ELECTRUM_URL=https://github.com/downloads/spesmilo/electrum/Electrum-1.5.6.tar.gz |
|||
NAME_ROOT=electrum-1.5.6 |
|||
|
|||
# Please update these links carefully, some versions won't work under Wine |
|||
PYTHON_URL=http://www.python.org/ftp/python/2.6.6/python-2.6.6.msi |
|||
PYQT4_URL=http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.9.5/PyQt-Py2.6-x86-gpl-4.9.5-1.exe |
|||
PYWIN32_URL=http://sourceforge.net/projects/pywin32/files/pywin32/Build%20218/pywin32-218.win32-py2.6.exe/download |
|||
PYINSTALLER_URL=https://github.com/downloads/pyinstaller/pyinstaller/pyinstaller-2.0.zip |
|||
NSIS_URL=http://prdownloads.sourceforge.net/nsis/nsis-2.46-setup.exe?download |
|||
#ZBAR_URL=http://sourceforge.net/projects/zbar/files/zbar/0.10/zbar-0.10-setup.exe/download |
|||
|
|||
# These settings probably don't need change |
|||
export WINEPREFIX=~/.wine-electrum |
|||
PYHOME=c:/python26 |
|||
PYTHON="wine $PYHOME/python.exe -OO -B" |
|||
|
|||
# Let's begin! |
|||
cd `dirname $0` |
|||
set -e |
|||
|
|||
if [ "x$1" != "xupdate" ]; then |
|||
|
|||
# Clean Wine environment |
|||
echo "Cleaning $WINEPREFIX" |
|||
rm -rf $WINEPREFIX |
|||
echo "done" |
|||
|
|||
echo "Cleaning tmp" |
|||
rm -rf tmp |
|||
mkdir -p tmp |
|||
echo "done" |
|||
|
|||
cd tmp |
|||
|
|||
# Install Python |
|||
wget -O python.msi "$PYTHON_URL" |
|||
msiexec /q /i python.msi |
|||
|
|||
# Install PyWin32 |
|||
wget -O pywin32.exe "$PYWIN32_URL" |
|||
wine pywin32.exe |
|||
|
|||
# Install PyQt4 |
|||
wget -O PyQt.exe "$PYQT4_URL" |
|||
wine PyQt.exe |
|||
|
|||
#cp -r /electrum-wine/pyinstaller $WINEPREFIX/drive_c/ |
|||
# Install pyinstaller |
|||
wget -O pyinstaller.zip "$PYINSTALLER_URL" |
|||
unzip pyinstaller.zip |
|||
mv pyinstaller-2.0 $WINEPREFIX/drive_c/pyinstaller |
|||
|
|||
# Patch pyinstaller's DummyZlib |
|||
patch $WINEPREFIX/drive_c/pyinstaller/PyInstaller/loader/archive.py < ../archive.patch |
|||
|
|||
# Install ZBar |
|||
#wget -q -O zbar.exe "http://sourceforge.net/projects/zbar/files/zbar/0.10/zbar-0.10-setup.exe/download" |
|||
#wine zbar.exe |
|||
|
|||
# Install dependencies |
|||
wget -q -O - "http://python-distribute.org/distribute_setup.py" | $PYTHON |
|||
wine "$PYHOME\\Scripts\\easy_install.exe" ecdsa slowaes #zbar |
|||
|
|||
# Install NSIS installer |
|||
wget -q -O nsis.exe "http://prdownloads.sourceforge.net/nsis/nsis-2.46-setup.exe?download" |
|||
wine nsis.exe |
|||
|
|||
# Install UPX |
|||
#wget -O upx.zip "http://upx.sourceforge.net/download/upx308w.zip" |
|||
#unzip -o upx.zip |
|||
#cp upx*/upx.exe . |
|||
|
|||
cd .. |
|||
fi |
|||
|
|||
cd tmp |
|||
|
|||
# Download and unpack Electrum |
|||
wget -O electrum.tgz "$ELECTRUM_URL" |
|||
tar xf electrum.tgz |
|||
mv Electrum-* electrum |
|||
rm -rf $WINEPREFIX/drive_c/electrum |
|||
mv electrum $WINEPREFIX/drive_c |
|||
|
|||
# Copy ZBar libraries to electrum |
|||
#cp "$WINEPREFIX/drive_c/Program Files (x86)/ZBar/bin/"*.dll "$WINEPREFIX/drive_c/electrum/" |
|||
|
|||
cd .. |
|||
|
|||
rm -rf dist/$NAME_ROOT |
|||
rm -f dist/$NAME_ROOT.zip |
|||
rm -f dist/$NAME_ROOT.exe |
|||
rm -f dist/$NAME_ROOT-setup.exe |
|||
|
|||
# For building standalone compressed EXE, run: |
|||
$PYTHON "C:/pyinstaller/pyinstaller.py" --noconfirm --ascii -w --onefile "C:/electrum/electrum" |
|||
|
|||
# For building uncompressed directory of dependencies, run: |
|||
$PYTHON "C:/pyinstaller/pyinstaller.py" --noconfirm --ascii -w deterministic.spec |
|||
|
|||
# For building NSIS installer, run: |
|||
wine "$WINEPREFIX/drive_c/Program Files (x86)/NSIS/makensis.exe" electrum.nsis |
|||
#wine $WINEPREFIX/drive_c/Program\ Files\ \(x86\)/NSIS/makensis.exe electrum.nsis |
|||
|
|||
cd dist |
|||
mv electrum.exe $NAME_ROOT.exe |
|||
mv electrum $NAME_ROOT |
|||
mv electrum-setup.exe $NAME_ROOT-setup.exe |
|||
zip -r $NAME_ROOT.zip $NAME_ROOT |
@ -0,0 +1,24 @@ |
|||
# -*- mode: python -*- |
|||
a = Analysis(['C:/electrum/electrum'], |
|||
pathex=['Z:\\electrum-wine'], |
|||
hiddenimports=[], |
|||
excludes=['Tkinter'], |
|||
hookspath=None) |
|||
pyz = PYZ(a.pure, level=0) |
|||
exe = EXE(pyz, |
|||
a.scripts, |
|||
exclude_binaries=1, |
|||
name=os.path.join('build\\pyi.win32\\electrum', 'electrum.exe'), |
|||
debug=False, |
|||
strip=None, |
|||
upx=True, |
|||
console=False ) |
|||
coll = COLLECT(exe, |
|||
a.binaries, |
|||
a.zipfiles, |
|||
a.datas, |
|||
strip=None, |
|||
upx=True, |
|||
name=os.path.join('dist', 'electrum')) |
|||
app = BUNDLE(coll, |
|||
name=os.path.join('dist', 'electrum.app')) |
@ -0,0 +1,129 @@ |
|||
; ------------------------------- |
|||
; Start |
|||
|
|||
|
|||
!define MUI_PRODUCT "Electrum" |
|||
!define MUI_FILE "electrum" |
|||
!define MUI_VERSION "" |
|||
!define MUI_BRANDINGTEXT "Electrum" |
|||
CRCCheck On |
|||
|
|||
!include "${NSISDIR}\Contrib\Modern UI\System.nsh" |
|||
|
|||
|
|||
;-------------------------------- |
|||
;General |
|||
|
|||
OutFile "dist\electrum-setup.exe" |
|||
ShowInstDetails "nevershow" |
|||
ShowUninstDetails "nevershow" |
|||
;SetCompressor "lzma" |
|||
|
|||
;!define MUI_ICON "icon.ico" |
|||
;!define MUI_UNICON "icon.ico" |
|||
;!define MUI_SPECIALBITMAP "Bitmap.bmp" |
|||
|
|||
|
|||
;-------------------------------- |
|||
;Folder selection page |
|||
|
|||
InstallDir "$PROGRAMFILES\${MUI_PRODUCT}" |
|||
|
|||
|
|||
;-------------------------------- |
|||
;Modern UI Configuration |
|||
|
|||
!define MUI_WELCOMEPAGE |
|||
!define MUI_LICENSEPAGE |
|||
!define MUI_DIRECTORYPAGE |
|||
!define MUI_ABORTWARNING |
|||
!define MUI_UNINSTALLER |
|||
!define MUI_UNCONFIRMPAGE |
|||
!define MUI_FINISHPAGE |
|||
|
|||
|
|||
;-------------------------------- |
|||
;Language |
|||
|
|||
!insertmacro MUI_LANGUAGE "English" |
|||
|
|||
|
|||
;-------------------------------- |
|||
;Modern UI System |
|||
|
|||
;!insertmacro MUI_SYSTEM |
|||
|
|||
|
|||
;-------------------------------- |
|||
;Data |
|||
|
|||
LicenseData "license.txt" |
|||
|
|||
|
|||
;-------------------------------- |
|||
;Installer Sections |
|||
Section "install" ;Installation info |
|||
|
|||
;Add files |
|||
SetOutPath "$INSTDIR" |
|||
|
|||
;File "${MUI_FILE}.exe" |
|||
;File "${MUI_FILE}.ini" |
|||
;File "license.txt" |
|||
SetOutPath "$INSTDIR" |
|||
file /r dist\electrum\*.* |
|||
|
|||
;create desktop shortcut |
|||
CreateShortCut "$DESKTOP\${MUI_PRODUCT}.lnk" "$INSTDIR\${MUI_FILE}.exe" "" |
|||
|
|||
;create start-menu items |
|||
CreateDirectory "$SMPROGRAMS\${MUI_PRODUCT}" |
|||
CreateShortCut "$SMPROGRAMS\${MUI_PRODUCT}\Uninstall.lnk" "$INSTDIR\Uninstall.exe" "" "$INSTDIR\Uninstall.exe" 0 |
|||
CreateShortCut "$SMPROGRAMS\${MUI_PRODUCT}\${MUI_PRODUCT}.lnk" "$INSTDIR\${MUI_FILE}.exe" "" "$INSTDIR\${MUI_FILE}.exe" 0 |
|||
|
|||
;write uninstall information to the registry |
|||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "DisplayName" "${MUI_PRODUCT} (remove only)" |
|||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" "UninstallString" "$INSTDIR\Uninstall.exe" |
|||
|
|||
WriteUninstaller "$INSTDIR\Uninstall.exe" |
|||
|
|||
SectionEnd |
|||
|
|||
|
|||
;-------------------------------- |
|||
;Uninstaller Section |
|||
Section "Uninstall" |
|||
|
|||
;Delete Files |
|||
RMDir /r "$INSTDIR\*.*" |
|||
|
|||
;Remove the installation directory |
|||
RMDir "$INSTDIR" |
|||
|
|||
;Delete Start Menu Shortcuts |
|||
Delete "$DESKTOP\${MUI_PRODUCT}.lnk" |
|||
Delete "$SMPROGRAMS\${MUI_PRODUCT}\*.*" |
|||
RmDir "$SMPROGRAMS\${MUI_PRODUCT}" |
|||
|
|||
;Delete Uninstaller And Unistall Registry Entries |
|||
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\${MUI_PRODUCT}" |
|||
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}" |
|||
|
|||
SectionEnd |
|||
|
|||
|
|||
;-------------------------------- |
|||
;MessageBox Section |
|||
|
|||
|
|||
;Function that calls a messagebox when installation finished correctly |
|||
Function .onInstSuccess |
|||
MessageBox MB_OK "You have successfully installed ${MUI_PRODUCT}. Use the desktop icon to start the program." |
|||
FunctionEnd |
|||
|
|||
|
|||
Function un.onUninstSuccess |
|||
MessageBox MB_OK "You have successfully uninstalled ${MUI_PRODUCT}." |
|||
FunctionEnd |
|||
|
|||
;eof |
Loading…
Reference in new issue