1 环境搭建

1.1 准备工作

安装启动:

  1. 安装替换图标工具: Resource Hacker
  2. 安装exe制作工具: NSIS(提取码:3dfp),在Plugins目录下添加 processwork.dll 插件
  3. 安装编译工具: msys2,在开始菜单中启动 MSYS2 MinGW 64-bit,进入 MINGW64 环境

注意事项:

  1. 生成32位应用程序需要在另一个msys2下的MINGW32 环境下进行
  2. 对于MinGW 32-bit,将下文中出现的 x86_64 替换成 i686 即可
  3. msys2 的安装目录(例如D:\msys64)就是根目录
  4. 所有源码需要下载至根目录,再进行编译安装

1.2 更新软件包

pacman -Syu

软件包 (6) bash-4.4.023-1  filesystem-2018.12-1  mintty-1~2.9.5-1
           msys2-runtime-2.11.2-1  pacman-5.1.2-2  pacman-mirrors-20180604-2

根据提示,关闭 msys2,从开始菜单栏重新启动,然后再执行一次。

1.3 安装开发工具

pacman -S base-devel --noconfirm

:: 在组 base-devel 中有 56 成员:
:: 软件仓库 msys
1) asciidoc  2) autoconf  3) autoconf2.13  4) autogen  5) automake-wrapper  6) automake1.10  7) automake1.11  8) automake1.12  9) automake1.13  10) automake1.14  11) automake1.15  12) automake1.16  13) automake1.6  14) automake1.7  15) automake1.8  16) automake1.9  17) bison  18) diffstat  19) diffutils  20) dos2unix  21) file  22) flex  23) gawk  24) gdb  25) gettext  26) gettext-devel  27) gperf  28) grep  29) groff  30) help2man  31) intltool  32) lemon  33) libtool  34) libunrar  35) libunrar-devel  36) m4  37) make  38) man-db  39) pacman  40) pactoys-git  41) patch  42) patchutils  43) perl  44) pkg-config  45) pkgfile  46) quilt  47) rcs  48) scons  49) sed  50) swig  51) texinfo  52) texinfo-tex  53) ttyrec  54) unrar  55) wget  56) xmlto

1.4 安装工具链

pacman -S mingw-w64-x86_64-toolchain --noconfirm

:: 在组 mingw-w64-x86_64-toolchain 中有 17 成员:
:: 软件仓库 mingw64
1) mingw-w64-x86_64-binutils  2) mingw-w64-x86_64-crt-git  3) mingw-w64-x86_64-gcc  4) mingw-w64-x86_64-gcc-ada  5) mingw-w64-x86_64-gcc-fortran  6) mingw-w64-x86_64-gcc-libgfortran  7) mingw-w64-x86_64-gcc-libs  8) mingw-w64-x86_64-gcc-objc  9) mingw-w64-x86_64-gdb  10) mingw-w64-x86_64-headers-git  11) mingw-w64-x86_64-libmangle-git  12) mingw-w64-x86_64-libwinpthread-git  13) mingw-w64-x86_64-make  14) mingw-w64-x86_64-pkg-config  15) mingw-w64-x86_64-tools-git  16) mingw-w64-x86_64-winpthreads-git  17) mingw-w64-x86_64-winstorecompat-git

1.5 安装依赖包

pacman -S \
mingw-w64-x86_64-gst-libav \
mingw-w64-x86_64-gst-plugins-bad \
mingw-w64-x86_64-gst-plugins-base \
mingw-w64-x86_64-gst-plugins-good \
mingw-w64-x86_64-gst-plugins-ugly \
mingw-w64-x86_64-gstreamer --noconfirm
pacman -S \
mingw-w64-x86_64-icoutils \
mingw-w64-x86_64-python2-six \
mingw-w64-x86_64-python2-pyparsing --noconfirm

1.6 安装spice-gtk的依赖包

(1)安装spice-gtk 0.35-3及其依赖包

pacman -S mingw-w64-x86_64-spice-gtk --noconfirm

(2)保留依赖包,卸载spice-gtk等

pacman -R mingw-w64-x86_64-spice-gtk \
mingw-w64-x86_64-usbredir \
mingw-w64-x86_64-libusb \
mingw-w64-x86_64-spice-protocol --noconfirm

2 编译客户端

版本说明:

组件名称 瘦终端版本 pacman默认 PC客户端
spice-protocol 0.12.13 0.12.14-1 0.12.13(make install)
libusb 1.0.21 1.0.22-1 1.0.22(make install)
usbredir 0.7.1 0.8.0-1 0.8.0(make install)
spice-gtk 0.34 0.35-3 0.34(make install)

编译步骤:

  1. spice-protocol 0.12.23
  2. libusb 1.0.22
  3. usbredir 0.8.0
  4. spice-gtk 0.34
  5. clouddesktop-client

2.1 编译spice-protocol

(1)下载spice-protocol 0.12.13源码

git clone http://10.142.233.181:8888/ctg-cache/spice-protocol.git

(2)然后make install

cd /spice-protocol && ./configure && make && make install

2.2 编译libusb

(1)下载libusb-1.0.22源码

git clone http://10.142.233.181:8888/zengzhihua/libusb-1.0.22.git

(2)然后make install

cd /libusb-1.0.22 && ./configure && make && make install

2.3 编译usbredir

(1)下载usbredir-0.8.0源码

git clone http://10.142.233.181:8888/zengzhihua/usbredir-0.8.0.git

(2)然后make install(首次编译时必须执行 sh autogen.sh

cd /usbredir-0.8.0 && sh autogen.sh && ./configure && make && make install

2.4 编译spice-gtk

(1)下载spice-gtk 0.34源码

git clone http://10.142.233.181:8888/zengzhihua/spice-gtk-0.34.git

(2)然后configure

cd /spice-gtk-0.34 && ./configure --disable-werror --enable-vala

成功后出现:

configure:

        Spice-Gtk 0.34
        ==============

        prefix:                   /mingw64
        c compiler:               gcc
        Target:                   Windows

        Gtk:                      3.0
        Coroutine:                winfiber
        PulseAudio:               no
        GStreamer Audio:          yes
        GStreamer Video:          yes
        SASL support:             yes
        Smartcard support:        no
        USB redirection support:  yes
        DBus:                     yes
        WebDAV support:           yes
        LZ4 support:              yes

        Now type 'make' to build spice-gtk        

(3)然后make install

make -j4 && make install

(4)编译完成后执行spicy测试一下

spicy

2.5 编译客户端

(1)下载clouddesktop-client中windows-master分支的源码

git clone -b windows-master http://10.142.233.181:8888/ctg-cache/clouddesktop-client.git clouddesktop-client-windows

(2)然后make install(注:首次编译时必须执行sh autogen.shx.x.x 替换成相应的版本号)

cd /clouddesktop-client-windows && sh autogen.sh && \
./configure --prefix=/CtyunDesktop-x64-x.x.x && \
make -j4 && make install

2.6 快速编译

(1)下载源码(可在 Git Bash 执行)

git clone http://10.142.233.181:8888/ctg-cache/spice-protocol.git && \
git clone http://10.142.233.181:8888/zengzhihua/libusb-1.0.22.git && \
git clone http://10.142.233.181:8888/zengzhihua/usbredir-0.8.0.git && \
git clone http://10.142.233.181:8888/zengzhihua/spice-gtk-0.34.git && \
git clone -b windows-master http://10.142.233.181:8888/ctg-cache/clouddesktop-client.git clouddesktop-client-windows

(2)编译脚本(x.x.x 替换成相应的版本号)

cd /spice-protocol && ./configure && make && make install && \
cd /libusb-1.0.22 && ./configure && make && make install && \
cd /usbredir-0.8.0 && sh autogen.sh && ./configure && make && make install && \
cd /spice-gtk-0.34 && ./configure --disable-werror --enable-vala && make -j4 && make install && \
cd /clouddesktop-client-windows && sh autogen.sh && ./configure --prefix=/CtyunDesktop-x64-x.x.x && make -j4 && ./src/remote-viewer.exe --debug

3 打包客户端

3.1 替换应用程序图标

打开Resource Hacker
(1)Open → 选择 /CtyunDesktop-x64-x.x.x/bin/remote-viewer.exe
(2)Add Binary or Image Resource → 选择 clouddesktop-client-windows/nsis/NSIS-Icon.ico
(3)Save(Ctrl+S)

3.2 修改配置

进入clouddesktop-client-windows/nsis
(1)修改 MakePackage-x64.bat 中的 dirname(CtyunDesktop-x64-x.x.x)
(2)修改 NSIS-Licence-x64.txt 中的 Software Licence (安装程序的许可说明)

3.3 运行脚本

(1)进入clouddesktop-client-windows/nsis,双击运行 MakePackage-x64.bat脚本,成功后进入CtyunDesktop-x64-x.x.x,文件结构如下:

|-- bin/
|-- lib/
|-- log/
|-- plugin/
|-- share/
|-- cloud-desktop-config.ini

(2)修改 cloud-desktop-config.ini 中的 cloud_urls ,对应不同环境的https接口地址

3.4 打包生成exe

进入clouddesktop-client-windows/nsis
(1)使用 HM VNISEdit 2.0.3 打开 NSIS-Setup-x64.nsi
(2)修改版本号: !define PRODUCT_VERSION "x.x.x"
(3)运行脚本:工具栏→NSIS→编译脚本,得到 CtyunDesktop-x64-x.x.x.exe

Windows下编译打包Spice PC客户端的更多相关文章

  1. 在Windows下编译OpenSSL(VS2005和VC6)

    需要说明的是请一定安装openssl-0.9.8a .  openssl-1.0.0我没有编译成功. 如何在Windows下编译OpenSSL (Vs2005使用Vc8的cl编译器)1.安装Activ ...

  2. 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  3. Windows下编译memcached-1.4.5(32bit和64bit)

    1.简介 Memcached 是一个高性能的分布式内存对象缓存系统.它通过将数据缓存在内存中来减少对数据库和文件系统的访问,减轻数据库及操作系统的负担,提高应用系统的速度. 目前已经很多系统应用了me ...

  4. Windows下编译最新版ChezScheme

    据说ChezScheme是最快的神级编译器,一秒钟几百万行,王垠说的2秒内编译自身绝不是夸张(看这里<揭秘Chez Scheme>,Scheme中文社区).ChezScheme由美国印第安 ...

  5. [转] Windows下编译OpenSSL

    简述 OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人 ...

  6. Windows下编译objective-C

    Windows下编译objective-C 2011-08-31 14:32 630人阅读 评论(0) 收藏 举报 windowscocoa工具objective clibraryxcode   目录 ...

  7. 在Windows下编译FFmpeg详细说明

    MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 MinGW,即 Minimalist GNU F ...

  8. 如何在WINDOWS下编译BOOST C++库 .

    如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25   写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0.   1)下载boost ...

  9. windows下编译java源文件的编码错误

    import java.util.Arrays;public class ArrayAsAReference{ public static void main(String[] args) { int ...

随机推荐

  1. 笔记本真机安装centos7

    突然有一天,想要装linux系统,所以就是去装,网上百度说的都很多,而且说来说去都是那几篇,大同小异,所以想通过自己本次装真机的一些经验提供给各位朋友参考一下. 一安装系统: 1先制作启动盘,用个比较 ...

  2. activeMq之hello(java)

    消息队列activeMq,   节省响应时间,解决了第三方响应时间长的问题让其他客户可以继续访问, 安装activeMq apache-activemq-5.14.0-bin\apache-activ ...

  3. 用css写出下拉框(代码转自wq群)

    做网易云音乐首页时遇到的问题,鼠标指在右上角头像时出现下拉框. <style>/* css*/ #body{ float: left; } #xialakuang{ background- ...

  4. 周鸿祎与85后的座谈(一):人人需要Mentor,世界没有奇迹

    我们公司现在有将近 4000 人,我觉得里面肯定是卧虎藏龙.百里挑一的话,也有 40 个伟大的人才.但是,即使是天才,如果没有前辈的帮助,最后也会变成庸才,是做不出什么大事的.举例来说,每一个跳水冠军 ...

  5. POJ1446 Girls and Boys

    Girls and Boys Time Limit: 5000MS   Memory Limit: 10000K Total Submissions: 12747   Accepted: 5678 D ...

  6. java并发编程基础-ReentrantLock及LinkedBlockingQueue源码分析

    ReentrantLock是一个较为常用的锁对象.在上次分析的uil开源项目中也多次被用到,下面谈谈其概念和基本使用. 概念 一个可重入的互斥锁定 Lock,它具有与使用 synchronized 相 ...

  7. <c:forEach varStatus="status">中 varStatus的属性简介

    我们常会用c标签来遍历需要的数据,为了方便使用,varStatus属性可以方便我们实现一些与行数相关的功能,如:奇数行.偶数行差异:最后一行特殊处理等等.先就varStatus属性常用参数总结下: $ ...

  8. SignalR2结合ujtopo实现拓扑图动态变化

    上一篇文章基于jTopo的拓扑图设计工具库ujtopo,介绍了拓扑设计工具,这一篇我们使用SignalR2结合ujtopo实现拓扑图的动态变化. 仅仅作为演示,之前的文章SignalR2简易数据看板演 ...

  9. 在.net中修改Webbrowser控件的IE版本

    根据32位.64位系统来分别修改对应的注册表路径的键值对,不需要重启程序. /// <summary> /// 修改Webbrowser控件模拟的IE版本 /// </summary ...

  10. 二进制入门-打造Linux shellcode基础篇

    0x01 前言   本文的目的不是为了介绍如何进行恶意的破坏性活动,而是为了教会你如何去防御此类破坏性活动,以帮助你扩大知识范围,完善自己的技能,如有读者运用本文所学技术从事破坏性活动,本人概不负责. ...