1. 程式人生 > >NSIS打包 文件夾權限 --- AccessControl

NSIS打包 文件夾權限 --- AccessControl

pop 使用 dap gen 項目 發的 執行 www. ima

之前用electron開發的PC端先是用electron-packager把項目打成可執行文件,然後再用grunt-electron-installer打包成安裝exe文件。最最最不爽的是,安裝沒有自定義目錄,默認裝在C盤;而且有時候會報安裝錯誤(installation has failed)。

技術分享

grunt-electron-installer提供的是配置式的接口,要解決這些安裝的問題也無從入手。有遇到這個並且解決了的同學歡迎留言。

最後選擇了可操作性比較強的制作程序NSIS:

技術分享

流程還是和之前一樣先把項目打包

electron-packager npm地址: https://www.npmjs.com/package/electron-packager

然後安裝NSIS 和 Nisedit

打開Nisedit,文件 -》新建腳步(向導)

技術分享

根據提示創建腳本 -- 參考

完成後會生成一堆堆的腳本

技術分享

點擊編譯

技術分享

最後會得出一個安裝包,大功告成。

然而。。。

點擊安裝包 ---》 安裝成功 ---》 使用報錯

。。。。

原因是,項目裏一些邏輯有本地文件操作,權限問題導致了操作失敗,報錯。

繼續谷歌。。。

找到了 AccessControl

官方地址: http://nsis.sourceforge.net/AccessControl_plug-in

先安裝這個插件

技術分享

找到NSIS安裝目錄,把壓縮包對應的文件拷進去就安裝好了。

然後,回到Nisedit,在復制文件夾時候使用

SetOutPath "$INSTDIR\resources\app"
  File "..\..\..\dApp\HomeCloud\out-dev\HomeCloud-win32-x64\resources\app\LICENSE.txt"
  File "..\..\..\dApp\HomeCloud\out-dev\HomeCloud-win32-x64\resources\app\logo-16.ico"
  File "..\..\..\dApp\HomeCloud\out-dev\HomeCloud-win32-x64\resources\app\logo.ico"
  File "..\..\..\dApp\HomeCloud\out-dev\HomeCloud-win32-x64\resources\app\main.js"
  ; 設置權限 ------
  AccessControl::GrantOnFile     "$INSTDIR\resources\app" "(BU)" "GenericRead + GenericWrite"
  Pop $0

意思是把app下的所有文件設置為可讀寫。

然後再次編譯腳本。

大功告成。。。。。。

NSIS打包 文件夾權限 --- AccessControl