Мое требование - при установке программного обеспечения с использованием установщика NSIS, оно должно вызвать функцию и проверить, подключен ли ИБП к компьютеру или нет.
Если ИБП подключен, он завершит процесс установки.
Если батарея ИБП не подключена, появится окно с сообщением «Пожалуйста, подключите ИБП и попробуйте еще раз, нажав« Отмена ».и кнопки «Повторить».Если нажать «Отмена», произойдет откат процесса установки.
Я смогу получить информацию, если ИБП подключен или не использует следующую строку кода:
System::Call "$INSTDIR\drvutil.dll::IsUPSPresent() i.r0 ?e"
ТогдаЯ использую условие «Если» и проверяю, подключен ли ИБП или нет.
${If} $0 = 0
Если условие ложное, мне нужно отобразить окно с сообщением типа «Пожалуйста, подключите ИБП и попробуйте снова с помощью« Отмена »."и" Повторить "кнопки".Если я нажму «Cancle», он должен откатить процесс установки.И если я подключу ИБП (или условие «Истина»), то установка должна завершиться.
Пожалуйста, помогите мне, как реализовать эту логику.
Ниже приведен мой фрагмент кода:
; The stuff to install
Section "UPSTest (required)"
SectionIn RO
DetailPrint "Testing UPS"
SetOutPath $INSTDIR
; Give the dll path
File E:\TestNullSoft\ValidateUPS.exe
File E:\TestNullSoft\drvutil.dll
File E:\TestNullSoft\UpsControl.dll
File E:\TestNullSoft\UpsDevice.dll
File E:\TestNullSoft\pdcdll.dll
System::Call 'KERNEL32::AddDllDirectory(w "$INSTDIR")' ; Tell Windows we trust all .DLLs in this directory
System::Call "$INSTDIR\drvutil.dll::IsUPSPresent() i.r0 ?e"
Pop $1
MessageBox MB_OK "Return value = $0, lasterr = $1"
; In the below line If the return value is 0("false"), That means UPS is not connected to the computer
${If} $0 = 0
; Here I need to show the Messagebox like "Please connect the UPS and try again with "Cancel" and "Retry" buttons"
; If I click on "Cancle", It should Roll back the installation process.
; Write the installation path into the registry
WriteRegStr HKLM SOFTWARE\NSIS_UPSTest "Install_Dir" "$INSTDIR"
; Write the uninstall keys for Windows
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\UPSTest" "DisplayName" "NSIS UPSTest"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\UPSTest" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\UPSTest" "NoModify" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\UPSTest" "NoRepair" 1
WriteUninstaller "uninstall.exe"
SectionEnd
Пожалуйста, укажите ваши данные по этому вопросу.