問題
win10系統下,程序任務欄在固定后取消固定,展示的程序內容異常。
排查
1.通過論壇查詢,應該是與app的api setAppUserModelId 相關
https://github.com/electron/electron/issues/3303
2.electron-builder腳本
electron-builder的腳本中有一項是 appId這個配置項,官方說這個也是用于配置AppId的和api是一致的。
驗證通過electron-builder直接nsis打包的可以解決這個問題,但是項目要美觀的nsis界面,通過自定義nsis打包,這個問題又出現了。說明問題不再編譯時,在安裝的時候這個appid生效的。
3.查找electron-builder源碼中appId什么時候被設置
nsis中的名稱是APP_ID
查到在安裝腳本中,快捷方式創建后,執行了WinShell的方法,將appid設置到快捷方式中。
問題解決
解決
1.直接使用electron-builder打包則只需要把程序中的setAppUserModelId 和electron-builder配置文件中的appId保持一致即可。
2.nsis這種打包方式,這種打包方式需要先下載nsis的winshell插件,
https://nsis.sourceforge.io/WinShell_plug-in
解壓安裝包,將其中的插件dll拷貝到Plugin的庫中。
nsis腳本通過ReserveFile命令拷貝WinShell插件。
在CreateShortCut之后,再使用WinShell::SetLnkAUMI進行設置AppUserModelId.
此問題即可解決。