咱们基于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