This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
wiki:development:build-howto-mswin:x2goclient [2018/06/07 06:18] ionic Rephrase Qt-SSL statement a bit. |
wiki:development:build-howto-mswin:x2goclient [2019/05/22 20:01] ionic [Pack/Compress X2Go Client] Update UPX web site. |
||
---|---|---|---|
Line 85: | Line 85: | ||
It is recommended to configure Qt to build statically linked applications. | It is recommended to configure Qt to build statically linked applications. | ||
- | This is how official X2Go Client builds are done | + | This is how official X2Go Client builds are done. |
It will take some time to reconfigure Qt for static builds. You surely can skip this step, but in this case you must provide Qt libraries with your X2Go Client binary. | It will take some time to reconfigure Qt for static builds. You surely can skip this step, but in this case you must provide Qt libraries with your X2Go Client binary. | ||
Line 116: | Line 116: | ||
$ make -j3 sub-src | $ make -j3 sub-src | ||
</ | </ | ||
+ | |||
==== Installing libssh ==== | ==== Installing libssh ==== | ||
You need libssh to build X2Go Client. | You need libssh to build X2Go Client. | ||
Line 151: | Line 152: | ||
< | < | ||
$ copy debian\changelog txt\ | $ copy debian\changelog txt\ | ||
- | git --no-pager log --since "2 years ago" --format=" | + | $ git --no-pager log --since "2 years ago" --format=" |
$ copy ChangeLog.gitlog txt\git-info | $ copy ChangeLog.gitlog txt\git-info | ||
- | |||
</ | </ | ||
Line 170: | Line 170: | ||
X2Go Client binaries (x2goclient.exe & x2gohelper.exe) are in d: | X2Go Client binaries (x2goclient.exe & x2gohelper.exe) are in d: | ||
+ | |||
==== Build X2Go Client from source (debug build) ==== | ==== Build X2Go Client from source (debug build) ==== | ||
Repeat the instructions for "Build X2Go Client from source", | Repeat the instructions for "Build X2Go Client from source", | ||
Line 176: | Line 177: | ||
- Edit nsis\x2goclient.nsi so that the following lines: | - Edit nsis\x2goclient.nsi so that the following lines: | ||
- | * CreateShortCut " | + | < |
- | | + | |
- | | + | CreateShortCut " |
+ | CreateShortCut " | ||
+ | </ | ||
Are replaced with the following: | Are replaced with the following: | ||
- | * CreateShortCut " | + | < |
- | | + | |
- | | + | CreateShortCut " |
+ | CreateShortCut " | ||
+ | </ | ||
==== Copy the X2Go Client binaries to the desired folder ==== | ==== Copy the X2Go Client binaries to the desired folder ==== | ||
Line 189: | Line 195: | ||
The 2 binaries to copy are: | The 2 binaries to copy are: | ||
- | - x2goclient.exe (from the '' | + | - '' |
- | - x2gohelper.exe (from the '' | + | - '' |
However, you must decide where you wish to copy them. | However, you must decide where you wish to copy them. | ||
- | - If you wish to run x2goclient from a folder without creating and running the NSIS installer , copy them to the '' | + | - If you wish to run x2goclient from a folder without creating and running the NSIS installer, copy them to the '' |
- | - If you wish to create an x2goclient NSIS installer, create the '' | + | - If you wish to create an x2goclient NSIS installer, create the '' |
==== Pack/ | ==== Pack/ | ||
- | You may want to pack X2Go Client to reduce it size. You can do it with [[http://upx.sourceforge.net/|upx]], which is available for Windows, Linux and Cygwin. | + | You may want to pack X2Go Client to reduce it size. You can do it with [[https://upx.github.io/|upx]], which is available for Windows, Linux and Cygwin. |
- | Official regular builds of X2Go Client are packed. Official debug builds of X2Go Client are not. | + | Official regular builds of X2Go Client are packed. Official debug builds of X2Go Client are not. There is no difference between nightly and release versions - both pack the release binary, while not packing the debug binary. |
It is available in [[http:// | It is available in [[http:// | ||
< | < | ||
- | x2goclient-contrib\upx\3.91_bin\upx.exe | + | x2goclient-contrib\upx\3.95_bin\upx.exe |
</ | </ | ||
The 2 files to pack are: | The 2 files to pack are: | ||
- | - x2goclient.exe | + | - '' |
- | - x2gohelper.exe | + | - '' |
===== Building nxproxy & OpenSSH (Optional) ===== | ===== Building nxproxy & OpenSSH (Optional) ===== | ||
Line 217: | Line 224: | ||
Official X2Go project builds usually rebuild nxproxy and OpenSSH if there are desired updates to those components, or if the cygwin libraries have been updated. | Official X2Go project builds usually rebuild nxproxy and OpenSSH if there are desired updates to those components, or if the cygwin libraries have been updated. | ||
- | Official X2Go project builds are kept under the x2goclient-contrib git repository under a folder like " | + | Official X2Go project builds are kept under the x2goclient-contrib git repository under a folder like " |
==== Installing Cygwin ==== | ==== Installing Cygwin ==== | ||
- | Download and start the [[https:// | + | Download and start the [[https:// |
- | Choose your cygwin | + | Choose your Cygwin |
For the X2Go-WinBuilder VM, install to D: | For the X2Go-WinBuilder VM, install to D: | ||
Line 229: | Line 237: | ||
< | < | ||
- | setup-x86.exe -P " | + | $ setup-x86.exe -P " |
</ | </ | ||
- | on installer page " | + | on installer page " |
* '' | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | + | * '' |
* '' | * '' | ||
* '' | * '' | ||
Line 242: | Line 250: | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | + | * '' |
* '' | * '' | ||
* '' | * '' | ||
Line 249: | Line 257: | ||
* '' | * '' | ||
- | <note tip>By installing the '' | + | <note tip>By installing the '' |
- | For building of OpenSSH Server, you will also need:: | + | For building of OpenSSH Server, you will also need: |
- | *libedit-devel | + | * '' |
- | *libncurses-devel | + | * '' |
- | *openssl-devel | + | * '' |
- | *patch | + | * '' |
- | For openssh | + | For OpenSSH |
If you are updating the X2Go Windows build VM, X2Go-WinBuilder, | If you are updating the X2Go Windows build VM, X2Go-WinBuilder, | ||
Line 284: | Line 292: | ||
If you are doing official builds, install these **source** packages for both nxproxy and openssh: | If you are doing official builds, install these **source** packages for both nxproxy and openssh: | ||
- | * dash | + | * '' |
- | * cygwin | + | * '' |
- | * gcc (select source for: gcc-core) | + | * '' |
- | * libedit (select source for: libedit0) | + | * '' |
- | * libjpeg-turbo (select source for: libjpeg-devel) | + | * '' |
- | * libpng15 (select source for: libpng-devel) (X2Go Client 4.0.3.x) | + | * '' |
- | * libpng (select source for: libpng-devel) (X2Go Client 4.0.4.x | + | * '' |
- | * ncurses (select source for: libncurses-devel) | + | * '' |
- | * openssh (source, but not binary) | + | * '' |
- | * openssl | + | * '' |
- | * zlib (select source for: zlib-devel) | + | * '' |
==== Building nxproxy 3.5 ==== | ==== Building nxproxy 3.5 ==== | ||
X2Go Client for Windows is currently built with nxproxy 3.5. | X2Go Client for Windows is currently built with nxproxy 3.5. | ||
- | * Open a cygwin shell and change to your build directory. In this example | + | * Open a cygwin shell and change to your build directory. In this example |
< | < | ||
$ cd / | $ cd / | ||
</ | </ | ||
- | * Download and extract the latest nx-libs-lite tarball from http:// | + | * Download and extract the latest nx-libs-lite tarball from [[http:// |
<note warning> | <note warning> | ||
Line 382: | Line 391: | ||
==== Building nxproxy 3.6 ==== | ==== Building nxproxy 3.6 ==== | ||
- | <note tip>X2Go Client for Windows is currently | + | <note tip>X2Go Client for Windows is currently |
- | </ | + | <note important> |
- | <note important> | + | |
- | </ | + | |
- | * Open a cygwin | + | * Open a Cygwin |
< | < | ||
$ cd / | $ cd / | ||
Line 420: | Line 427: | ||
Now the nxproxy binary (nxproxy.exe) is ready. You can copy it into the program packaging folder ('' | Now the nxproxy binary (nxproxy.exe) is ready. You can copy it into the program packaging folder ('' | ||
- | - nx-libs 3.5: From nxproxy directory (d: | + | - nx-libs 3.5: From '' |
- | - nx-libs 3.5: From nxcomp directory (d: | + | - nx-libs 3.5: From '' |
- | - nx-libs 3.6: From nxproxy\src directory (d: | + | - nx-libs 3.6: From '' |
- | - nx-libs 3.5: From nxcomp\src\.libs directory (d: | + | - nx-libs 3.6: From '' |
You must also copy required libraries into that folder. | You must also copy required libraries into that folder. | ||
- | - From cygwin directory (c: | + | - From cygwin directory ('' |
* '' | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
- | * '' | + | * '' |
* '' | * '' | ||
* '' | * '' | ||
Line 436: | Line 444: | ||
If you wish to facilitate debugging, or if you are updating x2goclient-contrib, | If you wish to facilitate debugging, or if you are updating x2goclient-contrib, | ||
- | - nx-libs 3.5: From nxproxy directory (d: | + | - nx-libs 3.5: From '' |
- | - nx-libs 3.5 :From nxcomp directory (d: | + | - nx-libs 3.5: From '' |
* '' | * '' | ||
* '' | * '' | ||
- | - nx-libs 3.6: From nxproxy\src directory (d: | + | - nx-libs 3.6: From '' |
- | - nx-libs 3.5 :From nxcomp\src\.libs directory (d: | + | - nx-libs 3.6: From '' |
* '' | * '' | ||
* '' | * '' | ||
+ | |||
+ | |||
==== Building OpenSSH Server ==== | ==== Building OpenSSH Server ==== | ||
- | Copy the source folder (downloaded and extracted from a tarball by cygwin) to your build directory. In this example | + | Copy the source folder (downloaded and extracted from a tarball by Cygwin) to your build directory. In this example |
< | < | ||
- | $cp -pr / | + | $ cp -pr / |
</ | </ | ||
- | cd to the openssh source directory, extract the upstream (openssh.com) tarball within, and cd to the lower-level source directory | + | '' |
< | < | ||
- | $cd / | + | $ cd / |
- | $tar -xzvf openssh-6.6p1.tar.gz | + | $ tar -xzvf openssh-6.6p1.tar.gz |
- | $cd openssh-6.6p1 | + | $ cd openssh-6.6p1 |
</ | </ | ||
- | Apply any patches that cygwin | + | Apply any patches that Cygwin |
< | < | ||
- | $patch < ../ | + | $ patch < ../ |
</ | </ | ||
Get and apply the X2Go patch, which enables use of the Open SSH Server with X2Go Client | Get and apply the X2Go patch, which enables use of the Open SSH Server with X2Go Client | ||
< | < | ||
- | $wget http:// | + | $ wget http:// |
- | $patch.exe < ../ | + | $ patch.exe < ../ |
</ | </ | ||
Build Open SSH Server | Build Open SSH Server | ||
< | < | ||
- | $./ | + | $ ./configure --libexecdir=/ |
- | $make | + | $ make |
- | $strip *.exe | + | $ strip *.exe |
</ | </ | ||
- | < | + | < |
+ | |||
+ | < | ||
+ | |||
+ | < | ||
- | < | ||
- | < | ||
==== Copying OpenSSH Server binaries ==== | ==== Copying OpenSSH Server binaries ==== | ||
- | Open SSH Server binaries are ready. You can copy it into the program packaging folder (dist/ or nsis/ | + | Open SSH Server binaries are ready. You can copy it into the program packaging folder ('' |
- | *sftp.exe | + | * '' |
- | *sftp-server.exe | + | * '' |
- | *ssh-keygen.exe | + | * '' |
- | *sshd.exe | + | * '' |
For example: | For example: | ||
< | < | ||
- | cp --preserve=time sftp.exe sftp-server.exe ssh-keygen.exe sshd.exe / | + | $ cp --preserve=time sftp.exe sftp-server.exe ssh-keygen.exe sshd.exe / |
</ | </ | ||
- | To be able to run Open SSH Server you should also copy needed programs and libraries from cygwin | + | To be able to run Open SSH Server you should also copy needed programs and libraries from the Cygwin |
- | 1st, copy these files over without changing their filenames. | + | First, copy these files over without changing their filenames. |
- | *cygcrypto-1.0.0.dll | + | * '' |
- | *cygedit-0.dll | + | * '' |
- | *cyggcc_s-1.dll | + | * '' |
- | *cygncursesw-10.dll | + | * '' |
- | *cygssp-0.dll | + | * '' |
- | *cygwin1.dll | + | * '' |
- | *cygz.dll | + | * '' |
For example: | For example: | ||
< | < | ||
- | cd /bin | + | $ cd /bin |
- | cp --preserve=time cygcrypto-1.0.0.dll cygedit-0.dll cyggcc_s-1.dll cygncursesw-10.dll cygssp-0.dll cygwin1.dll cygz.dll / | + | $ cp --preserve=time cygcrypto-1.0.0.dll cygedit-0.dll cyggcc_s-1.dll cygncursesw-10.dll cygssp-0.dll cygwin1.dll cygz.dll / |
</ | </ | ||
- | 2nd, copy the Dash executable over and rename it: | + | Then, copy the dash executable over and rename it: |
< | < | ||
ash.exe -> sh.exe | ash.exe -> sh.exe | ||
Line 519: | Line 530: | ||
For example: | For example: | ||
< | < | ||
- | cp --preserve=time ash.exe / | + | $ cp --preserve=time ash.exe / |
</ | </ | ||
Line 547: | Line 558: | ||
You can then install all of them by using the '' | You can then install all of them by using the '' | ||
- | 1st, clone [[http:// | + | First, clone [[http:// |
Now run the script with the following arguments. In this example: | Now run the script with the following arguments. In this example: | ||
- | * ..\x2goclient-contrib is the path to the x2goclient-contrib git repo | + | * '' |
- | * D: | + | * '' |
- | * "dist" | + | * '' |
< | < | ||
- | cd x2goclient | + | $ cd x2goclient |
- | copy-deps-win32.bat ..\x2goclient-contrib D: | + | $ copy-deps-win32.bat ..\x2goclient-contrib D: |
</ | </ | ||
or to the '' | or to the '' | ||
< | < | ||
- | cd x2goclient | + | $ cd x2goclient |
- | copy-deps-win32.bat nsis\x2goclient | + | $ copy-deps-win32.bat nsis\x2goclient |
</ | </ | ||
Line 569: | Line 580: | ||
However, at the end: | However, at the end: | ||
- | - View the copy-deps-win32.bat file to determine the location of the cygwin | + | - View the '' |
- | - From the cygwin | + | - From the Cygwin |
- Replace nxproxy.exe with nxproxy.exe.unstripped | - Replace nxproxy.exe with nxproxy.exe.unstripped | ||
Line 577: | Line 588: | ||
=== Libraries === | === Libraries === | ||
- | - Add MinGW 4.8' | + | - Add MinGW 4.8' |
* '' | * '' | ||
- | * '' | + | * '' |
- | * libwinpthread-1.dll | + | * '' |
- Add OpenSSL libraries (copy from your OpenSSL installation directory) | - Add OpenSSL libraries (copy from your OpenSSL installation directory) | ||
* '' | * '' | ||
Line 586: | Line 597: | ||
- libssh library ([[wiki: | - libssh library ([[wiki: | ||
* '' | * '' | ||
- | - libzip library (available [[http:// | + | - libzip library (available [[http:// |
* '' | * '' | ||
- | - zlib library for libzip (available [[http:// | + | - zlib library for libzip (available [[http:// |
* '' | * '' | ||
- | - zlib library for libssh (available [[http:// | + | - zlib library for libssh (available [[http:// |
* '' | * '' | ||
- | - If you want to use X2Go Client on older versions of Windows, you should put the " | + | - If you want to use X2Go Client on older versions of Windows, you should put the " |
* '' | * '' | ||
* '' | * '' | ||
Line 600: | Line 611: | ||
=== nxproxy === | === nxproxy === | ||
- | The latest version is available in [[http:// | + | The latest version is available in [[http:// |
You can download older versions, including their libraries, from here [[http:// | You can download older versions, including their libraries, from here [[http:// | ||
Line 612: | Line 623: | ||
Older builds do not have nxproxy.exe.unstripped; | Older builds do not have nxproxy.exe.unstripped; | ||
- | === OpenSSH | + | === OpenSSH |
X2Go Client for Windows uses a modified Cygwin OpenSSH Server for file sharing. | X2Go Client for Windows uses a modified Cygwin OpenSSH Server for file sharing. | ||
- | The latest version is available in [[http:// | + | The latest version is available in [[http:// |
You can download older versions from [[http:// | You can download older versions from [[http:// | ||
Line 630: | Line 641: | ||
Note that the files must be installed to the '' | Note that the files must be installed to the '' | ||
- | Even older Windows builds are available from [[http:// | + | Even older Windows builds are available from [[http:// |
=== VcXsrv - XP Compatible === | === VcXsrv - XP Compatible === | ||
Line 640: | Line 651: | ||
Note that the files must be installed to the '' | Note that the files must be installed to the '' | ||
- | Building VcXsrv from source is not the part of this Howto. However, it is documented | + | Building VcXsrv from source is not the part of this howto. However, it is documented |
All official X2Go Project builds use the 32-bit builds of VcXsrv. 64-bit builds are probably compatible with the 32-bit X2Go Client, but have not been tested. Furthermore, | All official X2Go Project builds use the 32-bit builds of VcXsrv. 64-bit builds are probably compatible with the 32-bit X2Go Client, but have not been tested. Furthermore, | ||
Line 649: | Line 660: | ||
Also, if you are doing an official X2Go Project build, remove these files that X2Go Client does not need and would take up extra space: | Also, if you are doing an official X2Go Project build, remove these files that X2Go Client does not need and would take up extra space: | ||
- | *iconv.dll | + | * '' |
- | *libgcc-s-sjlj-1.dll | + | * '' |
- | *libiconv-2.dll | + | * '' |
- | *libwinpthread-1.dll | + | * '' |
- | *libxml2.dll | + | * '' |
- | *libxml2-2.dll | + | * '' |
- | *plink.exe | + | * '' |
- | *uninstall.exe | + | * '' |
- | *xauth.exe | + | * '' |
- | *XCalc | + | * '' |
- | *xcalc.exe | + | * '' |
- | *XCalc-color | + | * '' |
- | *XClock | + | * '' |
- | *xclock.exe | + | * '' |
- | *XClock-color | + | * '' |
- | *xhost.exe | + | * '' |
- | *xlaunch.exe | + | * '' |
- | *xrdb.exe | + | * '' |
- | *xwininfo.exe | + | * '' |
- | Also, if you are doing an official X2Go Project build, before importing it into x2goclient-contrib, | + | Also, if you are doing an official X2Go Project build, before importing it into x2goclient-contrib, |
- | Using debian's strip-nondeterminism (a perl script that calls a perl library, both of which can be extracted from their deb's & run fine under Cygwin): | + | Using Debian's strip-nondeterminism (a perl script that calls a perl library, both of which can be extracted from their deb's & run fine under Cygwin): |
< | < | ||
- | cd / | + | $ cd / |
- | find . -name *.gz | xargs strip-nondeterminism | + | $ find . -name *.gz | xargs strip-nondeterminism |
</ | </ | ||
If you are doing an official X2Go Project build, create this file in the VcXsrv folder: | If you are doing an official X2Go Project build, create this file in the VcXsrv folder: | ||
- | *vcxsrv-version.txt | + | * '' |
- | And specify the version string of VcXsrv in it. The version string should be the only contents | + | And specify the version string of VcXsrv in it. The version string should be the only content |
1.15.2.3+xp-vc2013+x2go1 | 1.15.2.3+xp-vc2013+x2go1 | ||
If you are doing an official X2Go Project build, copy the project' | If you are doing an official X2Go Project build, copy the project' | ||
- | *COPYING.txt | + | * '' |
+ | |||
=== PuTTY === | === PuTTY === | ||
- | you can download PuTTY for Windows from [[http:// | + | You can download PuTTY for Windows from [[http:// |
These are the only binaries you need from PuTTY. Copy them directly into the '' | These are the only binaries you need from PuTTY. Copy them directly into the '' | ||
- | *plink.exe | + | * '' |
- | *pscp.exe | + | * '' |
+ | |||
===== Creating an NSIS Installer ===== | ===== Creating an NSIS Installer ===== | ||
Install NSIS Unicode (currently, 2.46.5): http:// | Install NSIS Unicode (currently, 2.46.5): http:// | ||
- | Then, edit nsis/ | + | Then, edit '' |
- | Then, open nsis\x2goclient.nsi with NSIS Unicode. It will build an installer (*-setup.exe) | + | Then, open '' |
If you wish to build via the command-line, | If you wish to build via the command-line, | ||
< | < | ||
- | " | + | $ " |
</ | </ | ||
(Adjust path if on 32-bit Windows.) | (Adjust path if on 32-bit Windows.) |