最近更新: 2017-10-17

MQTT用戶端入門 - 四、在 Windows 10 安裝 mosquitto 補遺

Mosquitto 提供 Windows 系統的安裝包。但是有些事沒說清楚,對首次接觸者帶來些許困擾。我在此補充一些事。

缺少功能

Mosquitto 的 Windows 系統安裝包並未啟用 MQTT over websockets 功能。如果你需要這功能,你得要下載原始碼自行編譯。

至於我個人的作法則不一樣。因為是 Windows 10 ,所以我啟用 Windows Subsystem for Linux (WSL) 安裝 Ubuntu on Windows 。然後在 Ubuntu on Windows 中直接用 apt-get 安裝 mosquitto 套件,同 Debian 安裝 mosquitto。本文寫作時, Ubuntu on Windows 運行的散佈版本為 16.04 , mosquitto 套件版本為 1.4.8 ,已可使用 MQTT over websockets 。

Windows Subsystem for Linux 是好東西啊。

安裝時的必要項目

Mosquitto 安裝程式 (Native build) 會提示你在繼續安裝前,先複製與安裝兩個軟體。但我建議先中斷 Mosquitto 安裝程式,等安裝了下列三個軟體之後,才去執行 Mosquitto 安裝程式。喔,你沒看錯,是「三個」。

1. pthreadVC2.dll

來源 ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/dll/x86/ 。下載 pthreadVC2.dll ,複製到 C:\Windows 目錄中。

2. Win32 OpenSSL v1.0.2 Light 32 bits

來源 https://slproweb.com/products/Win32OpenSSL.html 。下載 Win32OpenSSL_Light-1_0_2L.exe 。

注意,不要下載 v1.1.0f 版,這個較新的版本中並沒有 Mosquitto 需要的 libeay32.dllssleay32.dll 兩個檔案。也不要下載 Win64 版本。

安裝 OpenSSL 時,會有一個 Copy OpenSSL DDLs to: 的選項。你可以選擇將檔案複製到 Windows system 目錄。或者,先安裝到預設的 C:\OpenSSL-Win32\bin 目錄,再自己把該目錄中的 libeay32.dllssleay32.dll 複製到 C:\Windows 目錄。

如果你選擇自己複製那兩個 dll 檔案到 C:\Windows 的方式,複製完成後就可以移除 OpenSSL 套件。我們就只需要那兩個檔案而已。

3. Visual C++ Redistributable for Visual Studio 2015

目前的 Mosquitto (v1.4.9) 使用 Visual Studio 2015 編譯,所以你實際上還需要安裝 Visual C++ 2015 可轉發套件 (Visual C++ Redistributable for Visual Studio 2015) 。安裝文件沒有說明這一點。

來源 Microsoft Download Search

若未安裝 Visual C++ Redistributable for Visual Studio 2015 ,則 mosquitto 執行時會說缺少 vcruntime140.dll

系列文章
參考項目