基于Umi搭建Electron App
=====================
一、環(huán)境準(zhǔn)備與框架搭建

在開(kāi)始開(kāi)發(fā)之前,你需要準(zhǔn)備好Node環(huán)境。下載并安裝Node及Npm工具,建議使用nvm來(lái)管理多個(gè)版本的Node,這樣可以確保開(kāi)發(fā)流程的順暢。在搭建Umi+Antd+Electron框架時(shí),推薦使用特定的Node和Npm版本。
為了集成Ant Design作為UI庫(kù),推薦直接參考Ant Design Pro的搭建步驟,而不是UmiJS,這樣可以節(jié)省重新集成的時(shí)間。對(duì)于Windows系統(tǒng)用戶,在搭建過(guò)程中可能會(huì)遇到一些問(wèn)題,需要找到相關(guān)文件并按照步驟操作以解決。
二、React項(xiàng)目的創(chuàng)建與配置
使用create-umi命令生成React項(xiàng)目時(shí),你需要選擇適合的配置選項(xiàng)以確保項(xiàng)目按照你的需求搭建。請(qǐng)注意,在執(zhí)行命令時(shí),應(yīng)避免覆蓋已有文件,并確保正確配置。
三、Electron應(yīng)用的依賴引入與主進(jìn)程配置

在Electron應(yīng)用中,你需要引入Electron依賴并編寫主進(jìn)程文件main.js。這一步需要嚴(yán)格按照Electron官網(wǎng)文檔的指引,使用正確的命令加載URL,并與Webpack的devServer配置保持一致。
在配置Electron主進(jìn)程文件時(shí),特別注意端口的使用,確保與Webpack的配置相匹配。如果本地端口被占用,你可以通過(guò)配置文件或環(huán)境變量來(lái)調(diào)整。
四、Electron App的打包與配置優(yōu)化
打包Electron App時(shí),你可以使用electron-builder工具,并根據(jù)操作系統(tǒng)進(jìn)行相應(yīng)的配置。配置過(guò)程中,你需要設(shè)置一些關(guān)鍵參數(shù),如appId、productName、輸出目錄等。針對(duì)Electron App的打包配置,你還需要考慮歷史路由模式、publicPath以及outputPath等參數(shù)的調(diào)整。確保webpack的配置能滿足Electron的打包需求。
五、底層連接與環(huán)境處理

在Electron主進(jìn)程文件中,你需要根據(jù)生產(chǎn)環(huán)境和開(kāi)發(fā)環(huán)境分別處理加載渲染進(jìn)程的方式,以避免打包后出現(xiàn)白屏等問(wèn)題。通過(guò)調(diào)整腳本命令,你可以確保在不同環(huán)境下正確啟動(dòng)Electron應(yīng)用。針對(duì)Electron App的打包體積,你可以采取一些優(yōu)化策略,如調(diào)整資源壓縮、使用更高效的打包工具或技術(shù)等。完成搭建后,你可以將框架分享至Gitee,以便社區(qū)成員學(xué)習(xí)和使用。
electron開(kāi)發(fā)界面:如何連接底層?
===================
前言:在研究electron自動(dòng)更新時(shí),我們發(fā)現(xiàn)在electron的官方文檔中提到了在mac、linux、windows等平臺(tái)上electron的自動(dòng)更新方法。在windows平臺(tái)上,推薦使用grunt-electron-installer模塊來(lái)創(chuàng)建windows安裝包。而Squirrel這個(gè)工具可以幫助我們給electron應(yīng)用安裝更新卸載添加快捷方式。本文將主要講解如何在windows平臺(tái)下用Squirrel創(chuàng)建electron的exe安裝包。
一、創(chuàng)建NuGet包

我們的方法是使用NuGet工具創(chuàng)建NuGet包,再使用Squirrel工具創(chuàng)建exe安裝包。首先下載squirrel.exe和nuget.exe工具。也可以選擇直接安裝Squirrel.Windows(需要在visual studio環(huán)境下)。 接下來(lái)你就可以按照官方文檔指引進(jìn)行操作了。 需要注意的是在這個(gè)過(guò)程中需要處理好包的版本控制以及更新策略等問(wèn)題以確保應(yīng)用的穩(wěn)定性和安全性。 這樣一來(lái)你就能成功創(chuàng)建一個(gè)適用于windows平臺(tái)的electron應(yīng)用的exe安裝包啦! 這樣一來(lái)你的electron應(yīng)用就能更好地在windows平臺(tái)上運(yùn)行和部署了!創(chuàng)建Squirrel應(yīng)用安裝包的詳細(xì)步驟
章節(jié)一:準(zhǔn)備工作
新建文件夾與文件放置
在指定的目錄如“my-build”中,新建一文件夾。將下載好的squirrel.exe、nuget.exe和setup.exe放入此文件夾內(nèi)。將未打包的electron應(yīng)用一并放入,如圖示操作。

章節(jié)二:生成NuGet包的規(guī)格文件
執(zhí)行NuGet命令生成spec包
在“my-build”根目錄中,打開(kāi)命令行界面。執(zhí)行命令“nuget spec”,按照Squirrel的文檔要求,此操作將生成一個(gè)spec包的初始文件,用于后續(xù)NuGet包的創(chuàng)建。
章節(jié)三:編輯與創(chuàng)建NuGet包
編輯Package.nuspec文件

打開(kāi)剛剛生成的Package.nuspec文件,根據(jù)項(xiàng)目的實(shí)際需求進(jìn)行編輯。特別需要注意的是,Squirrel文檔中提到的target folder屬性需設(shè)置為lib/net45。利用
創(chuàng)建NuGet包
在編輯完P(guān)ackage.nuspec文件后,使用命令“nuget pack Package.nuspec”創(chuàng)建一個(gè)NuGet包。該命令執(zhí)行后,會(huì)在目錄中生成一個(gè)名為“[my_app_name].[version].nupkg”的包。
章節(jié)四:生成安裝程序
使用Squirrel生成安裝程序

將應(yīng)用程序打包成NuGet包之后,利用Squirrel來(lái)創(chuàng)建安裝程序。在根目錄的命令行中,執(zhí)行命令“squirrel--releasify [my_app_name].[version].nupkg”。執(zhí)行過(guò)程中,命令行可能不會(huì)有即時(shí)反饋,但一段時(shí)間后,會(huì)在目錄中生成一個(gè)release文件夾,其中包含NuGet包、RELEASES文件和安裝文件Setup.exe。
如果在過(guò)程中遇到問(wèn)題,可以查看目錄中的SquirrelSetup.log文件,根據(jù)其中的報(bào)錯(cuò)信息進(jìn)行調(diào)試。Squirrel的命令支持自定義設(shè)置,包括安裝過(guò)程中的圖標(biāo)和圖片文件的選擇,可以通過(guò)Squirrel--help命令查看更多幫助信息。
章節(jié)五:發(fā)布與應(yīng)用安裝
分發(fā)與安裝應(yīng)用
將上一步生成的setup.exe分發(fā)給需要安裝應(yīng)用的用戶。應(yīng)用會(huì)被安裝在C:UsersAdministratorAppDataLocal[appname]文件夾中。如果遇到安裝問(wèn)題,除了查看Squirrel的日志文件外,還可以查看C:UsersAdministratorAppDataLocalSquirrelTemp中的安裝日志進(jìn)行調(diào)試。

通過(guò)雙擊setup.exe即可開(kāi)始安裝應(yīng)用。整個(gè)過(guò)程直觀且易于操作,即使中途出現(xiàn)問(wèn)題,也可以通過(guò)日志文件進(jìn)行排查和解決。最終,成功安裝的應(yīng)用將會(huì)出現(xiàn)在用戶的電腦中,并可以通過(guò)圖標(biāo)直接訪問(wèn)和使用。安裝應(yīng)用及其快捷方式創(chuàng)建
一、安裝應(yīng)用的路徑
在安裝軟件后,你可以在指定的目錄路徑中找到應(yīng)用安裝的所在位置。當(dāng)你打開(kāi)C:UsersAdministratorAppDataLocal目錄時(shí),你可以看到你所安裝的應(yīng)用就在那里靜靜地等待你的使用。以下展示了這個(gè)路徑的詳細(xì)截圖。
二、自動(dòng)創(chuàng)建快捷方式
進(jìn)入我們安裝之后的文件夾,命令行進(jìn)入C:UsersAdministratorAppDataLocal[your appname],執(zhí)行 Update.exe--help,你將看到關(guān)于如何操作的一些提示。其中,一個(gè)重要的提示是:你可以通過(guò)執(zhí)行Update.exe--createshortcut命令來(lái)手動(dòng)創(chuàng)建快捷方式。這條命令將會(huì)創(chuàng)建一個(gè)指向electronelectron.exe的快捷方式,并且可以將指定的圖標(biāo)文件設(shè)置為快捷方式的圖標(biāo)。

三、靜默創(chuàng)建快捷方式
為了讓應(yīng)用在安裝過(guò)程中就能靜默地創(chuàng)建好快捷方式,我們需要在應(yīng)用的安裝過(guò)程中執(zhí)行上述的創(chuàng)建快捷方式的命令。由于我們的.exe會(huì)在安裝之后自動(dòng)打開(kāi)程序,所以我們?cè)诔绦虻娜肟趍ain.js中添加相關(guān)的監(jiān)聽(tīng)即可實(shí)現(xiàn)。我們也為程序的卸載過(guò)程添加了刪除快捷方式的監(jiān)聽(tīng)。至于程序的更新和刪除監(jiān)聽(tīng),雖然我已經(jīng)添加,但尚未進(jìn)行測(cè)試。
四、應(yīng)用的更新方法
我一直致力于實(shí)現(xiàn)增量更新,為此我嘗試了多種方法。其中一種是在程序的入口添加js,發(fā)送請(qǐng)求到服務(wù)器,拉取更改文件進(jìn)行本地替換。但如果是node_module依賴包的更改,這個(gè)方法并不適用。另一種更安全快捷的方法是通過(guò)發(fā)布一個(gè)版本號(hào)不同的exe來(lái)實(shí)現(xiàn)。具體步驟包括:復(fù)制更新后的文件到安裝文件夾,編輯Package.nuspec文件中的version標(biāo)簽,然后重新生成setup.exe并發(fā)布應(yīng)用。通過(guò)執(zhí)行新的setip.exe安裝時(shí),程序會(huì)自動(dòng)刪除之前的應(yīng)用,然后安裝新版本的應(yīng)用。不過(guò)具體的更新過(guò)程(是否進(jìn)行增量替換或整個(gè)應(yīng)用的重新安裝)還需要進(jìn)一步確認(rèn)。
五、創(chuàng)建自定義安裝包

我們已經(jīng)能夠發(fā)布自己的exe了,但如果想要讓應(yīng)用更個(gè)性化,我們可以為其創(chuàng)建自定義的安裝文件。為了做到這一點(diǎn),我們需要借助Resource Hacker工具來(lái)修改應(yīng)用的資源。下載并安裝Resource Hacker。然后,右鍵點(diǎn)擊electron.exe,選擇"Open using Rescource Hacker"。在Resource Hacker中,選擇Icon,然后進(jìn)行Replace Icon操作,選擇你想要替換的.ico文件即可。我們還需要更換exe里面的版本信息,打開(kāi)VersionInfo,修改FileDescription、ProductName以及SquirrelAwareVersion等版本信息為你的項(xiàng)目名稱或版本號(hào)。這樣,一個(gè)個(gè)性化的自定義安裝包就制作完成了?;赨mi搭建Electron App的打包優(yōu)化過(guò)程解析
一、應(yīng)用打包與優(yōu)化的重要性
在基于Umi搭建Electron App的過(guò)程中,我們可能會(huì)遇到打包后的dist包體積過(guò)大的問(wèn)題。這不僅影響應(yīng)用的下載和更新速度,還可能影響用戶體驗(yàn)。對(duì)打包過(guò)程進(jìn)行優(yōu)化,減小最終生成的文件大小,是非常必要的。
二、打包過(guò)程中的問(wèn)題分析
在初步使用webpack和electron-builder進(jìn)行打包后,我們可能會(huì)發(fā)現(xiàn)安裝程序和asar文件體積過(guò)大是主要問(wèn)題。通過(guò)對(duì)比簡(jiǎn)單工程與集成Umi、ant-design等復(fù)雜工程的打包結(jié)果,我們可以發(fā)現(xiàn),復(fù)雜工程的asar文件體積顯著增大。

三、安裝程序與asar文件的作用
安裝程序Setup.exe主要負(fù)責(zé)加載resources/app.asar中的內(nèi)容。而asar文件則是對(duì)源代碼進(jìn)行基本加密,防止直接訪問(wèn)源代碼。優(yōu)化這兩者的大小,是降低打包體積的關(guān)鍵。
四、優(yōu)化策略與實(shí)施
為了減小打包體積,我們可以采取以下優(yōu)化策略:
1. 分離web應(yīng)用和electron的package.json:利用electron-builder支持的雙package.json結(jié)構(gòu),進(jìn)行更有效的打包。

2. 調(diào)整打包流程:新建app文件夾,移動(dòng)main.js至app文件夾,并在此文件夾中新建package.json。
3. 避免重復(fù)打包dependencies:修改webpack打包配置和main.js內(nèi)容,同時(shí)在electron-builder打包流程中做出相應(yīng)的調(diào)整。
五、優(yōu)化效果展示
經(jīng)過(guò)上述優(yōu)化步驟,我們觀察到顯著的效果:基本Electron-Umi應(yīng)用的.exe文件體積減少了13MB,asar文件體積減少了167.27MB,整體dist包大小減小了186MB。這不僅提升了應(yīng)用的下載和更新體驗(yàn),也為后續(xù)的開(kāi)發(fā)提供了更優(yōu)化的基礎(chǔ)。
六、操作指南與后續(xù)開(kāi)發(fā)建議

具體的優(yōu)化代碼和配置可以參考相關(guān)文檔和倉(cāng)庫(kù)地址。對(duì)于后續(xù)的Electron App開(kāi)發(fā),建議持續(xù)關(guān)注打包優(yōu)化的最佳實(shí)踐,以不斷提升應(yīng)用的用戶體驗(yàn)和下載速度。還可以探索更多的Electron App構(gòu)建和優(yōu)化工具,以進(jìn)一步提高開(kāi)發(fā)效率和用戶體驗(yàn)。