咱們基於nwjs的window平臺開發了一個app, 但nwjs的殼是一個綠色免安裝程序,並且文件N多,從產品和使用者的角度出發這樣的產品形態不知足要求,須要把綠色免安裝程序製做成標準的可安裝的exe程序app
1. 找一個現成的打包工具,如nsis 2. 實現桌面快捷方式,開始菜單快捷方式,卸載快捷方式 3. 把程序信息寫入註冊表(坑:程序的請求權限必須設置爲admin)
使用版本nsis-3.0-setup.exe, 官網能夠下載工具
;NSIS Modern User Interface ;WorkPlus Setup Script Unicode true ;-------------------------------- ;Include Modern UI !include "MUI2.nsh" ;-------------------------------- ;General ;應用名稱 Name "WorkPlus" ;輸出名稱 OutFile "workplus-setup.exe" ;設置默認安裝路徑 InstallDir "$PROGRAMFILES\workplus" ;從註冊表檢取上次安裝路徑 InstallDirRegKey HKCU "Software\workplus" "" ;Windows Vista系統爲應用程序請求權限 RequestExecutionLevel admin ;-------------------------------- ;Interface Settings ;在安裝過程當中按"取消"的話,彈出是否終止安裝的確認窗口 !define MUI_ABORTWARNING ;-------------------------------- ;Pages ;!insertmacro MUI_PAGE_LICENSE "${NSISDIR}\Docs\Modern UI\License.txt" ;!insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES ;-------------------------------- ;Languages !insertmacro MUI_LANGUAGE "SimpChinese" LoadLanguageFile "${NSISDIR}\Contrib\Language files\TradChinese.nlf" ;-------------------------------- ;Version Information VIProductVersion "1.0.0.0" ;產品名稱 VIAddVersionKey /LANG=${LANG_SimpChinese} "ProductName" "WorkPlus" ;備註 VIAddVersionKey /LANG=${LANG_SimpChinese} "Comments" "WorkPlus" ;公司 VIAddVersionKey /LANG=${LANG_SimpChinese} "CompanyName" "Foreverht Company" ;合法商標 VIAddVersionKey /LANG=${LANG_SimpChinese} "LegalTrademarks" "WorkPlus" ;版權 VIAddVersionKey /LANG=${LANG_SimpChinese} "LegalCopyright" "Copyright Foreverht Company" ;描述 VIAddVersionKey /LANG=${LANG_SimpChinese} "FileDescription" "WorkPlus Application" ;文件版本號 VIAddVersionKey /LANG=${LANG_SimpChinese} "FileVersion" "1.0.0" ;-------------------------------- ;Installer Sections Section "" ;將輸出路徑設置爲安裝目錄 SetOutPath "$INSTDIR" ;ADD YOUR OWN FILES HERE... File /r "workplus" ;建立桌面快捷方式 CreateShortCut "$DESKTOP\WorkPlus.lnk" "$INSTDIR\workplus\WorkPlus.exe" "" "$INSTDIR\workplus\WorkPlus.exe" 0 ;建立開始菜單快捷方式 CreateDirectory "$SMPROGRAMS\WorkPlus" CreateShortcut "$SMPROGRAMS\WorkPlus\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 CreateShortcut "$SMPROGRAMS\WorkPlus\WorkPlus.lnk" "$INSTDIR\workplus\WorkPlus.exe" "" "$INSTDIR\workplus\WorkPlus.exe" 0 ;向註冊表寫入安裝路徑 WriteRegStr HKCU "Software\workplus" "" $INSTDIR WriteRegStr HKCU "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$INSTDIR\workplus\WorkPlus.exe" "RUNASADMIN" ;向註冊表寫入卸載信息 WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\workplus" "DisplayName" "WorkPlus" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\workplus" "UninstallString" '"$INSTDIR\uninstall.exe"' WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\workplus" "NoModify" 1 WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\workplus" "NoRepair" 1 ;建立卸載程序 WriteUninstaller "$INSTDIR\Uninstall.exe" SectionEnd ;-------------------------------- ;Uninstaller Section Section "Uninstall" ;ADD YOUR OWN FILES HERE... RMDir /r "$INSTDIR\workplus" ;刪除卸載程序 Delete "$INSTDIR\Uninstall.exe" ;刪除桌面快捷方式 Delete "$DESKTOP\WorkPlus.lnk" ;刪除開始菜單目錄 Delete "$SMPROGRAMS\workplus\*.*" RMDir "$SMPROGRAMS\workplus" ;刪除安裝目錄 RMDir "$INSTDIR" ;刪除註冊表鍵 DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\workplus" DeleteRegKey /ifempty HKCU "Software\workplus" SectionEnd
右鍵選中nsis的腳本,點擊Compile NSIS Script, 以下圖所示spa
程序默認的安裝路徑是C:Program Files (x86)workplus, window下若有要往Program Files目錄寫文件進去是須要管理員權限的,若是不安裝在這個目錄下是沒有權限問題的code
;Windows Vista系統爲應用程序請求權限
RequestExecutionLevel none|user|highest|admin, 使用admin權限orm
執行後程序不能寫入文件,仍是權限的問題,若是你右鍵以管理員身份運行是ok的,若是你的程序不是安裝在C盤的Program Files (x86)目錄下是沒有權限問題的blog
網上找資料說能夠在註冊表裏聲明exe以管理員身份運行
WriteRegStr HKCU "SoftwareMicrosoftWindows NTCurrentVersionAppCompatFlagsLayers"
"$INSTDIRworkplusWorkPlus.exe" "RUNASADMIN"ip