Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows GUI: Add evergreen online/stub installer #991

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 147 additions & 0 deletions Source/Install/MediaInfo_GUI_Windows_EvergreenStub.nsi
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
#NSIS: encoding=UTF-8
RequestExecutionLevel admin
ManifestDPIAware true

; Some defines
!define PRODUCT_NAME "MediaInfo"
!define PRODUCT_PUBLISHER "MediaArea.net"
!define PRODUCT_VERSION "24.12"
!define PRODUCT_VERSION4 "${PRODUCT_VERSION}.0.0"

; Compression
SetCompressor /FINAL /SOLID lzma

; x64 stuff
!include x64.nsh

; Logic stuff
!include LogicLib.nsh

; Windows version stuff
!include WinVer.nsh

; String functions
!include StrFunc.nsh
${Using:StrFunc} StrTrimNewLines

; Word functions
!include WordFunc.nsh

; Installer icon
Icon "..\..\Source\Resource\Image\MediaInfo.ico"

; Enable Visual Styles
XPStyle on

; Info
VIProductVersion "${PRODUCT_VERSION4}"
VIAddVersionKey /LANG=0 "CompanyName" "${PRODUCT_PUBLISHER}"
VIAddVersionKey /LANG=0 "ProductName" "${PRODUCT_NAME}"
VIAddVersionKey /LANG=0 "ProductVersion" "${PRODUCT_VERSION4}"
VIAddVersionKey /LANG=0 "FileDescription" "All about your audio and video files"
VIAddVersionKey /LANG=0 "FileVersion" "${PRODUCT_VERSION4}"
VIAddVersionKey /LANG=0 "LegalCopyright" "${PRODUCT_PUBLISHER}"
VIAddVersionKey /LANG=0 "OriginalFilename" "${PRODUCT_NAME}_GUI_Windows_Online.exe"
BrandingText " "

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "..\..\Release\${PRODUCT_NAME}_GUI_Windows_Online.exe"
ShowInstDetails nevershow

; Variables
Var LATEST_VERSION
Var ARCH_SELECTED
Var VERSION_SELECTED
Var FILENAME

Section
HideWindow
InitPluginsDir
SetOutPath "$PLUGINSDIR"
Delete "$PLUGINSDIR\MediaInfoInstaller.exe"
Delete "$PLUGINSDIR\version.txt"

inetc::get /CAPTION "MediaInfo GUI Online Installer" /BANNER "Downloading version information..." \
"https://mediaarea.net/mediainfo_check/version.txt" "$PLUGINSDIR\version.txt"
Pop $0
${If} $0 != "OK"
MessageBox MB_OK "Download Status: $0"
goto Exit
${EndIf}

FileOpen $4 "$PLUGINSDIR\version.txt" r
FileRead $4 $LATEST_VERSION
FileClose $4

${If} ${AtLeastWinVista}
${If} ${IsNativeARM64}
${AndIf} ${AtLeastWin11}
StrCpy $ARCH_SELECTED "ARM64"
${ElseIf} ${IsNativeAMD64}
StrCpy $ARCH_SELECTED "x64"
${Else}
StrCpy $ARCH_SELECTED "i386"
${EndIf}
${StrTrimNewLines} $VERSION_SELECTED $LATEST_VERSION
StrCpy $FILENAME "MediaInfo_GUI_$VERSION_SELECTED_Windows_$ARCH_SELECTED.exe"
${ElseIf} ${AtLeastWinXP}
StrCpy $VERSION_SELECTED "21.03"
StrCpy $ARCH_SELECTED "Universal"
StrCpy $FILENAME "MediaInfo_GUI_$VERSION_SELECTED_Windows.exe"
${Else}
StrCpy $VERSION_SELECTED "0.7.60"
StrCpy $ARCH_SELECTED "i386"
StrCpy $FILENAME "MediaInfo_GUI_$VERSION_SELECTED_Windows_$ARCH_SELECTED.exe"
MessageBox MB_OK "Please contact us at [email protected] for old versions."
goto Exit
${EndIf}

inetc::get /CAPTION "MediaInfo GUI Online Installer" /BANNER "Downloading MediaInfo GUI $VERSION_SELECTED $ARCH_SELECTED..." \
"https://mediaarea.net/download/binary/mediainfo-gui/$VERSION_SELECTED/$FILENAME" "$PLUGINSDIR\MediaInfoInstaller.exe"
Pop $0
${If} $0 != "OK"
MessageBox MB_OK "Download Status: $0"
goto Exit
${EndIf}

; Verify digital signature of the downloaded installer
${VersionCompare} "$VERSION_SELECTED" "22.11" $R8
${If} $R8 == "1"
CertCheck::CheckPETrustAndInfoAsync "$PLUGINSDIR\MediaInfoInstaller.exe" "MEDIAAREA.NET" "SSL.com Code Signing Intermediate CA RSA R1"
${Else}
CertCheck::CheckPETrustAndInfoAsync "$PLUGINSDIR\MediaInfoInstaller.exe" "MediaArea.net" "Sectigo RSA Code Signing CA"
${EndIf}
CertCheckGetStatus:
CertCheck::GetStatus
Pop $0
${If} $0 == 0
sleep 10
goto CertCheckGetStatus
${EndIf}
Pop $0
Pop $1
${If} $0 == 0
${AndIf} $1 == 0
MessageBox mb_iconStop "Installer signed with an unexpected cert that is untrusted!"
goto Exit
${ElseIf} $0 == 0
MessageBox mb_iconStop "Installer signed with an untrusted cert!"
goto Exit
${ElseIf} $1 == 0
MessageBox mb_iconStop "Installer signed with an unexpected cert!"
goto Exit
${EndIf}

; Execute the downloaded installer
${IfNot} ${Silent}
ExecWait '"$PLUGINSDIR\MediaInfoInstaller.exe"'
${Else}
ExecWait '"$PLUGINSDIR\MediaInfoInstaller.exe" /S'
${EndIf}

Exit:
; Make sure PLUGINSDIR is not locked and can be deleted
SetOutPath "$TEMP"

Quit
SectionEnd
59 changes: 43 additions & 16 deletions Source/Install/MediaInfo_GUI_Windows_Stub.nsi
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#NSIS: encoding=UTF-8
RequestExecutionLevel admin
ManifestDPIAware true

; Some defines
!define PRODUCT_NAME "MediaInfo"
Expand All @@ -16,7 +17,7 @@ RequestExecutionLevel admin
SetCompressor /FINAL /SOLID lzma

; x64 stuff
!include "x64.nsh"
!include x64.nsh

; Logic stuff
!include LogicLib.nsh
Expand Down Expand Up @@ -45,6 +46,9 @@ Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "..\..\Release\${PRODUCT_NAME}_GUI_${PRODUCT_VERSION}_Windows_Online.exe"
ShowInstDetails nevershow

; Variables
Var ARCH_SELECTED

Section
HideWindow
InitPluginsDir
Expand All @@ -53,29 +57,52 @@ Section

${If} ${IsNativeARM64}
${AndIf} ${AtLeastWin11}
inetc::get /CAPTION "MediaInfo Online Installer" /BANNER "Downloading MediaInfo ${PRODUCT_VERSION} ARM64..." \
"${BASEURL}/MediaInfo_GUI_${PRODUCT_VERSION}_Windows_ARM64.exe" "$PLUGINSDIR\MediaInfoInstaller.exe"
StrCpy $ARCH_SELECTED "ARM64"
${ElseIf} ${IsNativeAMD64}
StrCpy $ARCH_SELECTED "x64"
${Else}
${If} ${IsNativeAMD64}
inetc::get /CAPTION "MediaInfo Online Installer" /BANNER "Downloading MediaInfo ${PRODUCT_VERSION} x64..." \
"${BASEURL}/MediaInfo_GUI_${PRODUCT_VERSION}_Windows_x64.exe" "$PLUGINSDIR\MediaInfoInstaller.exe"
${Else}
inetc::get /CAPTION "MediaInfo Online Installer" /BANNER "Downloading MediaInfo ${PRODUCT_VERSION} i386..." \
"${BASEURL}/MediaInfo_GUI_${PRODUCT_VERSION}_Windows_i386.exe" "$PLUGINSDIR\MediaInfoInstaller.exe"
${EndIf}
StrCpy $ARCH_SELECTED "i386"
${EndIf}

inetc::get /CAPTION "MediaInfo GUI Online Installer" /BANNER "Downloading MediaInfo GUI ${PRODUCT_VERSION} $ARCH_SELECTED..." \
"${BASEURL}/MediaInfo_GUI_${PRODUCT_VERSION}_Windows_$ARCH_SELECTED.exe" "$PLUGINSDIR\MediaInfoInstaller.exe"
Pop $0
${If} $0 == "OK"
${IfNot} ${Silent}
ExecWait '"$PLUGINSDIR\MediaInfoInstaller.exe"'
${Else}
ExecWait '"$PLUGINSDIR\MediaInfoInstaller.exe" /S'
${If} $0 != "OK"
MessageBox MB_OK "Download Status: $0"
goto Exit
${EndIf}

; Verify digital signature of the downloaded installer
CertCheck::CheckPETrustAndInfoAsync "$PLUGINSDIR\MediaInfoInstaller.exe" "MEDIAAREA.NET" "SSL.com Code Signing Intermediate CA RSA R1"
CertCheckGetStatus:
CertCheck::GetStatus
Pop $0
${If} $0 == 0
sleep 10
goto CertCheckGetStatus
${EndIf}
Pop $0
Pop $1
${If} $0 == 0
${AndIf} $1 == 0
MessageBox mb_iconStop "Installer signed with an unexpected cert that is untrusted!"
goto Exit
${ElseIf} $0 == 0
MessageBox mb_iconStop "Installer signed with an untrusted cert!"
goto Exit
${ElseIf} $1 == 0
MessageBox mb_iconStop "Installer signed with an unexpected cert!"
goto Exit
${EndIf}

; Execute the downloaded installer
${IfNot} ${Silent}
ExecWait '"$PLUGINSDIR\MediaInfoInstaller.exe"'
${Else}
MessageBox MB_OK "Download Status: $0"
ExecWait '"$PLUGINSDIR\MediaInfoInstaller.exe" /S'
${EndIf}

Exit:
; Make sure PLUGINSDIR is not locked and can be deleted
SetOutPath "$TEMP"

Expand Down
Loading