Files
2026-07-13 13:20:22 +08:00

101 lines
5.0 KiB
NSIS

!ifndef AIONUI_INSTALLER_ERRORS_SENTRY_NSH
!define AIONUI_INSTALLER_ERRORS_SENTRY_NSH
!include "${PROJECT_DIR}\resources\windows\support\_sentry-dsn.generated.nsh"
!include "${PROJECT_DIR}\resources\windows\installer-messages.nsh"
!define AIONUI_E_UNINSTALLER_COPY_OR_REBUILD_FAILED "E1001"
!define AIONUI_E_OLD_UNINSTALL_FAILED "E1002"
!define AIONUI_E_INSTALL_DIR_REMOVE_OR_LOCKED "E1003"
!define AIONUI_E_EXTRACT_FAILED "E1010"
!define AIONUI_E_DISK_INSUFFICIENT "E1020"
!define AIONUI_E_BUNDLED_AIONCORE_INCOMPLETE "E1030"
!define AIONUI_E_CORE_APP_FILES_INCOMPLETE "E1031"
!define AIONUI_E_ARCH_MISMATCH "E1040"
!define AIONUI_E_ACTIVE_INSTALLER_CONFLICT "E1050"
!define AIONUI_E_REGISTRY_STATE_INVALID "E1060"
!define AIONUI_E_ACTIVE_MARKER_WRITE_FAILED "E1070"
!define AIONUI_E_INVALID_INSTALL_PATH "E1090"
!macro AIONUI_FAIL_UX _CODE _DETAIL _MSG_ZH _MSG_EN _ACTION_ZH _ACTION_EN _DIAGNOSTICS_ZH _DIAGNOSTICS_EN
!insertmacro AIONUI_SLOG "event=session-end result=fail code=${_CODE} detail=${_DETAIL}"
Push $9
${If} ${Silent}
StrCpy $9 "auto"
${Else}
StrCpy $9 "yes"
MessageBox MB_YESNO|MB_ICONSTOP \
"${AIONUI_MSG_INSTALL_FAILED_ZH} (${_CODE})$\r$\n$\r$\n\
${_MSG_ZH}$\r$\n$\r$\n\
${AIONUI_MSG_SUGGESTED_ACTION_ZH}:$\r$\n${_ACTION_ZH}$\r$\n$\r$\n\
${AIONUI_MSG_DIAGNOSTICS_ZH}:$\r$\n${_DIAGNOSTICS_ZH}$\r$\n$\r$\n\
${AIONUI_MSG_INSTALLER_LOG_ZH}:$\r$\n$AionUiSessionLogPath$\r$\n$\r$\n\
${AIONUI_MSG_SEND_REPORT_ZH}$\r$\n$\r$\n\
${AIONUI_MSG_BLOCK_SEPARATOR}$\r$\n$\r$\n\
${AIONUI_MSG_INSTALL_FAILED_EN} (${_CODE})$\r$\n$\r$\n\
${_MSG_EN}$\r$\n$\r$\n\
${AIONUI_MSG_SUGGESTED_ACTION_EN}:$\r$\n${_ACTION_EN}$\r$\n$\r$\n\
${AIONUI_MSG_DIAGNOSTICS_EN}:$\r$\n${_DIAGNOSTICS_EN}$\r$\n$\r$\n\
${AIONUI_MSG_INSTALLER_LOG_EN}:$\r$\n$AionUiSessionLogPath$\r$\n$\r$\n\
${AIONUI_MSG_SEND_REPORT_EN}" \
/SD IDNO IDNO +2
Goto +2
StrCpy $9 "no"
${EndIf}
${If} $9 == "no"
!insertmacro AIONUI_SLOG "event=report-skipped reason=user-declined code=${_CODE}"
${ElseIf} $9 == "auto"
!insertmacro AIONUI_SLOG "event=report-auto reason=silent code=${_CODE}"
!insertmacro AIONUI_REPORT_TO_SENTRY_NOUI "${_CODE}" "${_DETAIL}"
${Else}
!insertmacro AIONUI_REPORT_TO_SENTRY "${_CODE}" "${_DETAIL}"
${EndIf}
Pop $9
!insertmacro AIONUI_CLEAR_ACTIVE_INSTALLER_MARKER
SetErrorLevel 2
Quit
!macroend
!macro AIONUI_FAIL_REPORTABLE _CODE _DETAIL _MSG_EN _ACTION_EN
!insertmacro AIONUI_FAIL_UX ${_CODE} "${_DETAIL}" "${AIONUI_MSG_GENERIC_FAILURE_ZH}" "${_MSG_EN}" "${AIONUI_MSG_GENERIC_ACTION_ZH}" "${_ACTION_EN}" "${_DETAIL}" "${_DETAIL}"
!macroend
!macro AIONUI_FAIL_REPORTABLE_ROOTED _ROOT_CODE _WRAPPER_CODE _DETAIL _MSG_EN _ACTION_EN
!insertmacro AIONUI_FAIL_UX "${_ROOT_CODE}" "wrapperCode=${_WRAPPER_CODE} ${_DETAIL}" "${AIONUI_MSG_GENERIC_FAILURE_ZH}" "${_MSG_EN}" "${AIONUI_MSG_GENERIC_ACTION_ZH}" "${_ACTION_EN}" "${_DETAIL}" "${_DETAIL}"
!macroend
!macro AIONUI_FAIL_REPORTABLE_BILINGUAL _CODE _DETAIL _MSG_EN _MSG_ZH _ACTION_EN _ACTION_ZH
!insertmacro AIONUI_FAIL_UX ${_CODE} "${_DETAIL}" "${_MSG_ZH}" "${_MSG_EN}" "${_ACTION_ZH}" "${_ACTION_EN}" "${_DETAIL}" "${_DETAIL}"
!macroend
!macro AIONUI_FAIL_REPORTABLE_ROOTED_BILINGUAL _ROOT_CODE _WRAPPER_CODE _DETAIL _MSG_EN _MSG_ZH _ACTION_EN _ACTION_ZH
!insertmacro AIONUI_FAIL_UX "${_ROOT_CODE}" "wrapperCode=${_WRAPPER_CODE} ${_DETAIL}" "${_MSG_ZH}" "${_MSG_EN}" "${_ACTION_ZH}" "${_ACTION_EN}" "${_DETAIL}" "${_DETAIL}"
!macroend
!macro AIONUI_FAIL_REPORTABLE_BILINGUAL_DIAGNOSTICS _CODE _DETAIL _MSG_EN _MSG_ZH _ACTION_EN _ACTION_ZH _DIAGNOSTICS_EN _DIAGNOSTICS_ZH
!insertmacro AIONUI_FAIL_UX ${_CODE} "${_DETAIL}" "${_MSG_ZH}" "${_MSG_EN}" "${_ACTION_ZH}" "${_ACTION_EN}" "${_DIAGNOSTICS_ZH}" "${_DIAGNOSTICS_EN}"
!macroend
!macro AIONUI_FAIL_REPORTABLE_ROOTED_BILINGUAL_DIAGNOSTICS _ROOT_CODE _WRAPPER_CODE _DETAIL _MSG_EN _MSG_ZH _ACTION_EN _ACTION_ZH _DIAGNOSTICS_EN _DIAGNOSTICS_ZH
!insertmacro AIONUI_FAIL_UX "${_ROOT_CODE}" "wrapperCode=${_WRAPPER_CODE} ${_DETAIL}" "${_MSG_ZH}" "${_MSG_EN}" "${_ACTION_ZH}" "${_ACTION_EN}" "${_DIAGNOSTICS_ZH}" "${_DIAGNOSTICS_EN}"
!macroend
!macro AIONUI_REPORT_TO_SENTRY _CODE _DETAIL
!insertmacro AIONUI_REPORT_TO_SENTRY_IMPL "${_CODE}" "${_DETAIL}" ""
!macroend
!macro AIONUI_REPORT_TO_SENTRY_NOUI _CODE _DETAIL
!insertmacro AIONUI_REPORT_TO_SENTRY_IMPL "${_CODE}" "${_DETAIL}" "-NoUi"
!macroend
!macro AIONUI_REPORT_TO_SENTRY_IMPL _CODE _DETAIL _NO_UI
Push $9
InitPluginsDir
File /oname=$PLUGINSDIR\aionui-report-installer-failure.ps1 "${PROJECT_DIR}\resources\windows\support\report-installer-failure.ps1"
nsExec::Exec `"$SYSDIR\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -ExecutionPolicy Bypass -File "$PLUGINSDIR\aionui-report-installer-failure.ps1" -Dsn "${AIONUI_SENTRY_DSN}" -LogPath "$AionUiSessionLogPath" -Code "${_CODE}" -Detail "${_DETAIL}" -Release "${VERSION}" -Arch "${AIONUI_TARGET_ARCH}" -Session "$AionUiSessionId" -Updated "$AionUiIsUpdated" ${_NO_UI}`
Pop $9
Pop $9
!macroend
!endif