${SegmentFile} ;=== START INTEGRITY CHECK 1.1 Var Var bolCustomIntegrityCheckStartUnsupported Var strCustomIntegrityCheckVersion ;=== END INTEGRITY CHECK !include WinMessages.nsh ${Segment.OnInit} ;=== START INTEGRITY CHECK 1.1 OnInit ;Check for improper install/upgrade without running the PA.c Installer which can cause issues ;Designed to not require ReadINIStrWithDefault which is not included in the PA.c Launcher code ${If} ${FileExists} "$EXEDIR\App\AppInfo\appinfo.ini" ${If} ${FileExists} "$EXEDIR\App\AppInfo\pac_installer_log.ini" ReadINIStr $R0 "$EXEDIR\App\AppInfo\pac_installer_log.ini" "PortableApps.comInstaller" "Info2" ${If} $R0 == "This file was generated by the PortableApps.com Installer wizard and modified by the official PortableApps.com Installer TM Rare Ideas, LLC as the app was installed." StrCpy $R1 "true" ${Else} StrCpy $R1 "false" ${EndIf} ${Else} StrCpy $R1 "false" ${EndIf} ${Else} StrCpy $R1 "true" ${EndIf} ${If} $R1 == "false" ;Upgrade or install sans the PortableApps.com Installer which can cause compatibility issues ClearErrors ReadINIStr $0 "$EXEDIR\App\AppInfo\appinfo.ini" "Version" "PackageVersion" ${If} ${Errors} ${OrIf} $0 == "" StrCpy $0 "0.0.0.1" ClearErrors ${EndIf} ClearErrors ReadINIStr $1 "$EXEDIR\Data\settings\${AppID}Settings.ini" "${AppID}Settings" "InvalidPackageWarningShown" ${If} ${Errors} ${OrIf} $1 == "" StrCpy $1 "0.0.0.0" ClearErrors ${EndIf} ${VersionCompare} $0 $1 $2 ${If} $2 == 1 MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2 `Integrity Failure Warning: ${NamePortable} was installed or upgraded without using its installer and some critical files may have been modified. This could cause data loss, personal data left behind on a shared PC, functionality issues, and/or may be a violation of the application's license. Neither the application publisher nor PortableApps.com will be responsible for any issues you encounter.$\r$\n$\r$\nWould you like to start ${NamePortable} in its current unsupported state?` IDYES CustomIntegrityCheckGotoStartAnyway IDNO CustomIntegrityCheckGotoDownloadQuestion CustomIntegrityCheckGotoDownloadQuestion: ;Check to ensure we have a valid homepage before asking the user StrCpy $R0 "" ${If} ${FileExists} "$EXEDIR\App\AppInfo\appinfo.ini" ReadINIStr $R0 "$EXEDIR\App\AppInfo\appinfo.ini" "Details" "Homepage" ${EndIf} ${If} $R0 == "" Abort ${Else} StrCpy $R1 $R0 4 ${If} $R1 != "http" ${AndIf} $R1 != "HTTP" StrCpy $R0 "http://$R0" ${EndIf} ${EndIf} MessageBox MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON1 `Would you like to visit the ${NamePortable} homepage to download the app and upgrade your current install?` IDYES CustomIntegrityCheckGotoURL IDNO CustomIntegrityCheckGotoAbort CustomIntegrityCheckGotoURL: ExecShell "open" $R0 Abort CustomIntegrityCheckGotoAbort: Abort CustomIntegrityCheckGotoStartAnyway: StrCpy $bolCustomIntegrityCheckStartUnsupported true StrCpy $strCustomIntegrityCheckVersion $0 ${EndIf} ${EndIf} ;=== END INTEGRITY CHECK !macroend ${SegmentInit} ;Ensure we have a proper Documents path ExpandEnvStrings $1 "%PortableApps.comDocuments%" ${If} $1 == "" ${OrIfNot} ${FileExists} "$1\*.*" ${GetParent} $EXEDIR $3 ${GetParent} $3 $1 ${If} $1 == "" ;Be sure we didn't just GetParent on Root StrCpy $1 $3 ${EndIf} ${If} ${FileExists} "$1\Documents\*.*" StrCpy $2 "$1\Documents" ${Else} ${GetRoot} $EXEDIR $1 ${If} ${FileExists} "$1\Documents\*.*" StrCpy $2 "$1\Documents" ${Else} StrCpy $2 "$1" ${EndIf} ${EndIf} System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("PortableApps.comDocuments", "$2").r0' ${EndIf} !macroend ${SegmentPre} ReadEnvStr $0 "JAVA_HOME" ${WordReplace} $0 "\" "/" "+" $1 System::Call 'Kernel32::SetEnvironmentVariable(t, t) i("JAVA_HOME_FORWARDSLASH", "$1").r0' !macroend ${SegmentPrePrimary} ;=== START INTEGRITY CHECK 1.1 PrePrimary ${If} $bolCustomIntegrityCheckStartUnsupported == true WriteINIStr "$EXEDIR\Data\settings\${AppID}Settings.ini" "${AppID}Settings" "InvalidPackageWarningShown" $strCustomIntegrityCheckVersion ${EndIf} ;=== END INTEGRITY CHECK ;Load app ttf fonts FindFirst $0 $1 "$EXEDIR\App\fonts\*.ttf" ${DoWhile} $1 != "" System::Call "gdi32::AddFontResource(t'$EXEDIR\App\fonts\$1')i .r2" FindNext $0 $1 ${Loop} FindClose $0 ;Load app otf fonts FindFirst $0 $1 "$EXEDIR\App\fonts\*.otf" ${DoWhile} $1 != "" System::Call "gdi32::AddFontResource(t'$EXEDIR\App\fonts\$1')i .r2" FindNext $0 $1 ${Loop} FindClose $0 ;Load user ttf fonts FindFirst $0 $1 "$EXEDIR\Data\fonts\*.ttf" ${DoWhile} $1 != "" System::Call "gdi32::AddFontResource(t'$EXEDIR\Data\fonts\$1')i .r2" FindNext $0 $1 ${Loop} FindClose $0 ;Load user otf fonts FindFirst $0 $1 "$EXEDIR\Data\fonts\*.otf" ${DoWhile} $1 != "" System::Call "gdi32::AddFontResource(t'$EXEDIR\Data\fonts\$1')i .r2" FindNext $0 $1 ${Loop} FindClose $0 ;Let all running apps know SendMessage ${HWND_BROADCAST} ${WM_FONTCHANGE} 0 0 /TIMEOUT=1 !macroend ${SegmentPostPrimary} ;Remove app ttf fonts FindFirst $0 $1 "$EXEDIR\App\fonts\*.ttf" ${DoWhile} $1 != "" System::Call "gdi32::RemoveFontResource(t'$EXEDIR\App\fonts\$1')i .r2" FindNext $0 $1 ${Loop} FindClose $0 ;Remove app otf fonts FindFirst $0 $1 "$EXEDIR\App\fonts\*.otf" ${DoWhile} $1 != "" System::Call "gdi32::RemoveFontResource(t'$EXEDIR\App\fonts\$1')i .r2" FindNext $0 $1 ${Loop} FindClose $0 ;Remove user ttf fonts FindFirst $0 $1 "$EXEDIR\Data\fonts\*.ttf" ${DoWhile} $1 != "" System::Call "gdi32::RemoveFontResource(t'$EXEDIR\Data\fonts\$1')i .r2" FindNext $0 $1 ${Loop} FindClose $0 ;Remove user otf fonts FindFirst $0 $1 "$EXEDIR\Data\fonts\*.otf" ${DoWhile} $1 != "" System::Call "gdi32::RemoveFontResource(t'$EXEDIR\Data\fonts\$1')i .r2" FindNext $0 $1 ${Loop} FindClose $0 ;Let all running apps know SendMessage ${HWND_BROADCAST} ${WM_FONTCHANGE} 0 0 /TIMEOUT=1 !macroend