1、安装前先检测正在运行的进程,如果检测到指定进程,就杀掉
Section test
;插件调用示例
killer::IsProcessRunning "ParallelProduceTestTool.exe"
Pop $R0
${if} $R0 == 1
MessageBox MB_ICONQUESTION|MB_YESNO "安装程序检测到 ${PRODUCT_NAME} 正在运行,是否强行关闭并继续安装?" IDYES dokill IDNO stopit
dokill:
killer::KillProcess "ParallelProduceTestTool.exe"
GoTo endding
stopit:
Abort
endding:
${Endif}
SectionEnd
2、开机自启
在Section -Post里面加入
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Run" "ParallelProduceTestTool" "$INSTDIR\ParallelProduceTestTool.exe"
3、安装前检测旧版本
Var UNINSTALL_PROG
Var OLD_VER
Var OLD_PATH
Function .onInit
ClearErrors
ReadRegStr $UNINSTALL_PROG ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} "UninstallString"
IfErrors done
ReadRegStr $OLD_VER ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} "DisplayVersion"
MessageBox MB_YESNOCANCEL|MB_ICONQUESTION \
"检测到本机已经安装了 ${PRODUCT_NAME} $OLD_VER。\
$\n$\n是否先卸载已安装的版本?" \
/SD IDYES \
IDYES uninstall \
IDNO done
Abort
uninstall:
StrCpy $OLD_PATH $UNINSTALL_PROG -10
ExecWait '"$UNINSTALL_PROG" /S _?=$OLD_PATH' $0
DetailPrint "uninst.exe returned $0"
Delete "$UNINSTALL_PROG"
RMDir $OLD_PATH
done:
FunctionEnd