1.基础语法
www.wenjiangs.com/doc/dzu8vfr…
2.nsis 打包时将程序添加到window右键菜单
2.1 安装时写入注册表
...
WriteRegExpandStr HKCR "*\shell${MAIN_EXE_NAME}" "" "使用 ${MAIN_EXE_NAME} 打开"
WriteRegExpandStr HKCR "*\shell${MAIN_EXE_NAME}" "Icon" "$INSTDIR${MAIN_EXE_NAME}.exe"
WriteRegExpandStr HKCR "*\shell${MAIN_EXE_NAME}\command" "" `"$INSTDIR${MAIN_EXE_NAME}.exe" "%V"`
...
2.2 卸载时删除注册表
...
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
DeleteRegKey HKCR "*\shell${MAIN_EXE_NAME}"
DeleteRegKey HKCR "*\shell${MAIN_EXE_NAME}\command"
...
- nsis检测是否已安装此应用
#此处检测当前是否安装此应用
StrCpy $4 $6 -10
IfFileExists $4\uninst.exe found
StrCpy $6 ""
DeleteRegValue ${PRODUCT_UNINST_ROOT_KEY} "${PATH_KEY}" "${PRODUCT_PATHNAME}"
found:
${if} "$INSTDIR${EXE_NAME}" != "$6"
${If} "$6" != ""
StrCpy $BUTTON_NAME "卸载"
StrCpy $R8 "其他文件下已安装了${PRODUCT_NAME},是否卸载"
StrCpy $R7 "2"
Call ShowMsgBox
pop $0
${If} $0 == 0
goto InstallAbort
${EndIf}
${If} $0 == 1
StrCpy $4 $6 -10
ExecWait '"$4\uninst.exe"' $0
DetailPrint "uninst.exe returned $0"
Delete "$6"
RMDir $4
goto InstallAbort
${EndIf}
${EndIf}
${EndIf}
IfFileExists 用来判断文件路径下卸载程序是否还存在,如果存在就继续执行,不存在跳过