本教程完全按照Wireshark
官方文档(https://www.wireshark.org/docs/wsdg_html_chunked/ChSetupWin32.html)按部就班地操作。
Chocolatey
Chocolatey
是一个Windows的原生包管理器,在https://chocolatey.org/packages上列出了许多软件包。
安装方法参考https://chocolatey.org/install,在Windows 10上以管理员身份运行
打开Windows PowerShell
,执行如下命令:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
Microsoft Visual Studio
下载和安装Microsoft Visual Studio 2019 Community Edition
。
在安装过程中,选择桌面应用Desktop development with C++
,保留VC++ 2019
、Windows 10 SDK
、Visual C++ tools for CMake
等组件。
Qt
有两种安装方式:
(1)在Qt下载页面,选择Go open source
,注册下载qt-unified-windows-x86-3.2.1-2-online.exe
;
(2)在Qt官方发布页面,选择相应版本,离线安装。
本文采用后者,下载qt-opensource-windows-x86-5.14.1.exe,但是在安装过程中需要使用提前注册的Qt Account
登陆。
备注:选择默认
安装,如果想展开那些项,该安装程序易出现未响应
,关闭重新安装即可。
Python
在https://www.python.org/downloads/下载python-3.8.1.exe
,默认安装即可,安装完毕后设置环境变量Path
。
Perl
在http://strawberryperl.com/下载strawberry-perl-5.30.1.1-64bit.msi
,默认安装即可,安装完毕后设置环境变量Path
。
Git
在https://git-scm.com/download/win下载Git-2.25.0-64-bit.exe
,默认安装即可,安装完毕后设置环境变量Path
。
CMake
在https://cmake.org/download/下载cmake-3.16.4-win64-x64.msi
,默认安装即可,安装完毕后设置环境变量Path
。
Asciidoctor
、Xsltproc
、DocBook
、HTML Help
、Doxygen
在Windows 10上以管理员身份运行
打开Windows PowerShell
,执行如下命令:
choco install -y asciidoctorj xsltproc docbook-bundle html-help-workshop doxygen.install
winflexbison
在https://sourceforge.net/projects/winflexbison/下载win_flex_bison-latest.zip
,默认安装即可,安装完毕后设置环境变量Path
。
本文项目的work_dir
为:C:\Users\xxx\Desktop\Project\wireshark
在work_dir
下,打开Git Bash
,执行如下命令:
cd C:\Users\xxx\Desktop\Project\wireshark
git clone https://github.com/wireshark/wireshark.git
注:本文使用git checkout -b xxx
命令创建xxx
分支,在该分支上对源码进行修改和编译。
(1)打开Visual Studio Command Prompt
在开始菜单Visual Studio 2019
文件夹中,打开x64 Native Tools Command Prompt for VS 2019
,执行如下命令:
cd C:\Users\xxx\Desktop\Project\wireshark\wsbuild64
(2)设置环境变量
执行env.bat
,其内容为:
rem Let CMake determine the library download directory name under
rem WIRESHARK_BASE_DIR or set it explicitly by using WIRESHARK_LIB_DIR.
rem Set *one* of these.
set WIRESHARK_LIB_DIR=C:\Users\xxx\Desktop\Project\wireshark\wireshark-win64-libs
rem Set the Qt installation directory
set QT5_BASE_DIR=C:\Qt\Qt5.14.1
rem Append a custom string to the package version. Optional.
set WIRESHARK_VERSION_EXTRA=202002151238
(3)生成build files
执行config.bat
,其内容为:
rem config
cmake -G "Visual Studio 16 2019" -A x64 ..\wireshark
注:在config
的过程中,会自动下载依赖包,位于C:\Users\xxx\Desktop\Project\wireshark\wireshark-win64-libs
目录。
(4)编译
执行build.bat
,其内容为:
rem build
msbuild /m /p:Configuration=RelWithDebInfo Wireshark.sln
生成的可执行程序位于C:\Users\xxx\Desktop\Project\wireshark\wsbuild64\run\RelWithDebInfo
目录,双击打开Wireshark.exe
进行测试。
执行guide.bat
,其内容为:
rem Create User's and Developer's Guide
msbuild /m /p:Configuration=RelWithDebInfo docbook\all_guides.vcxproj
生成的两种文档developer-guide
和user-guide
位于C:\Users\xxx\Desktop\Project\wireshark\wsbuild64\docbook
目录。
NSIS
在https://nsis.sourceforge.io/Main_Page下载nsis-3.05-setup.exe
,默认安装即可,安装完毕后设置环境变量Path
。
分别执行package.bat
中的两条语句,其内容为:
rem Create a Wireshark installer
rem msbuild /m /p:Configuration=RelWithDebInfo nsis_package_prep.vcxproj
rem Sign executables
rem msbuild /m /p:Configuration=RelWithDebInfo nsis_package.vcxproj
生成的安装程序位于C:\Users\xxx\Desktop\Project\wireshark\wsbuild64\packaging\nsis
目录,在其它机器上安装Wireshark-win64-3.3.0202002151238.exe
进行测试。
C:\Users\xxx\Desktop\Project\wireshark\wireshark-3.2.1\tools\win-setup.ps1 : 无法对参数“Destination”执行参数验证。值为“C:\Users\xxx\Desktop\Project\wireshark\wireshark-win64-libs”的参数的“$_ -like "*\wireshark-*-libs-3.2"”验证脚本未返回 True 结果。请确定验证脚本失败的原因,然后重试该命令。
所在位置 行:1 字符: 95
原因:
见脚本wireshark\toolswin-setup.ps1
,环境变量WIRESHARK_LIB_DIR
传递错误。
解决方案:
set WIRESHARK_LIB_DIR=C:\Users\xxx\Desktop\Project\wireshark\wireshark-win64-libs-3.2
CMake Error at C:/Program Files/CMake/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message): Could NOT find LEX (missing: LEX_EXECUTABLE)
原因:
没有安装win_flex_bison
。
解决方案:
手动安装后,并设置环境变量。
!include: could not find: "MUI.nsh"
Error in script "uninstall.nsi" on line 24 -- aborting creation process
原因:
NSIS
未完整安装,缺失了Modern User Interface
组件。
解决方案:
补充安装。
File: "C:\Users\xxx\Desktop\Project\wireshark\wsbuild64\docbook\user-guide.chm" -> no files found.
Usage: File [/nonfatal] [/a] ([/r] [/x filespec [...]] filespec [...] | /oname=outfile one_file_only)
Error in script "wireshark.nsi" on line 1173 -- aborting creation process
原因:
没有安装 HTML Help
,导致没有生成 .chm
格式的文档。
解决方案:
安装 HTML Help Workshop
,并重新生成文档。
[1] Wireshark 安装指南
[2] Wireshark 依赖包
[3] Wireshark Q&A
[4] Wireshark 用户指南
[5] Wireshark 开发指南
[6] Chocolatey 官网
[7] Chocolatey 软件包列表
[8] Qt 官方发布版本
[9] Qt Project Git Repository Browser
[10] Qt wiki