diff options
Diffstat (limited to 'xorg-server/installer/vcxsrv.nsi')
| -rw-r--r-- | xorg-server/installer/vcxsrv.nsi | 294 | 
1 files changed, 294 insertions, 0 deletions
| diff --git a/xorg-server/installer/vcxsrv.nsi b/xorg-server/installer/vcxsrv.nsi new file mode 100644 index 000000000..cb88c3d32 --- /dev/null +++ b/xorg-server/installer/vcxsrv.nsi @@ -0,0 +1,294 @@ +/*  This file is part of vcxsrv.
 + *
 + *  Copyright (C) 2009 Marc Haesen
 + *
 + *  vcxsrv is free software: you can redistribute it and/or modify
 + *  it under the terms of the GNU General Public License as published by
 + *  the Free Software Foundation, either version 3 of the License, or
 + *  (at your option) any later version.
 + *
 + *  vcxsrv is distributed in the hope that it will be useful,
 + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + *  GNU General Public License for more details.
 + *
 + *  You should have received a copy of the GNU General Public License
 + *  along with vcxsrv.  If not, see <http://www.gnu.org/licenses/>.
 +*/
 +;--------------------------------
 +
 +; The name of the installer
 +Name "VcXsrv"
 +
 +; The file to write
 +OutFile "vcxsrv.1.8.1.installer.exe"
 +
 +; The default installation directory
 +InstallDir $PROGRAMFILES\VcXsrv
 +
 +; Registry key to check for directory (so if you install again, it will 
 +; overwrite the old one automatically)
 +InstallDirRegKey HKLM "Software\VcXsrv" "Install_Dir"
 +
 +; Request application privileges for Windows Vista
 +RequestExecutionLevel admin
 +
 +;--------------------------------
 +InstType "Full"
 +InstType "Minimal"
 +
 +; Pages
 +
 +Page components
 +Page directory
 +Page instfiles
 +
 +UninstPage uninstConfirm
 +UninstPage instfiles
 +
 +SetPluginUnload alwaysoff
 +; ShowInstDetails show
 +XPStyle on
 +
 +!define FUSION_REFCOUNT_UNINSTALL_SUBKEY_GUID {8cedc215-ac4b-488b-93c0-a50a49cb2fb8}
 +
 +!ifdef VS2008
 +!include runtime
 +!endif
 +
 +;--------------------------------
 +; The stuff to install
 +Section "VcXsrv (required)"
 +
 +  SectionIn RO
 +  SectionIn 1 2
 +
 +  ; Set output path to the installation directory.
 +  SetOutPath $INSTDIR
 +
 +  ; Remove old opengl32.dll file if it extits
 +  IfFileExists "$INSTDIR\opengl32.dll" 0 +2
 +    Delete "$INSTDIR\opengl32.dll"
 +
 +  ; Put files there
 +  File "..\obj\servrelease\vcxsrv.exe"
 +  File "..\obj\servdebug\vcxsrv_dbg.exe"
 +  File "..\obj\servdebug\vcxsrv_dbg.pdb"
 +  File "..\protocol.txt"
 +  File "..\system.XWinrc"
 +  File "..\..\xkbcomp\obj\release\xkbcomp.exe"
 +  File "..\..\apps\xcalc\obj\release\xcalc.exe"
 +  File "..\xcalc"
 +  File "..\xcalc-color"
 +  File "..\..\apps\xclock\obj\release\xclock.exe"
 +  File "..\..\apps\xwininfo\obj\release\xwininfo.exe"
 +  File "..\XKeysymDB"
 +  File "..\XErrorDB"
 +  File "..\hw\xwin\xlaunch\obj\release\xlaunch.exe"
 +  File "..\..\tools\plink\obj\release\plink.exe"
 +  File "..\swrast_dri.dll"
 +  File "..\swrast_dri_dbg.dll"
 +!ifndef VS2008
 +  File "msvcr100.dll"
 +  File "msvcp100.dll"
 +  File "msvcr100d.dll"
 +!endif
 +  SetOutPath $INSTDIR\fonts
 +  File /r "..\fonts\*.*"
 +  SetOutPath $INSTDIR\xkbdata
 +  File /r "..\xkbdata\*.*"
 +  SetOutPath $INSTDIR\locale
 +  File /r "..\locale\*.*"
 +
 +  ; Write the installation path into the registry
 +  WriteRegStr HKLM SOFTWARE\VcXsrv "Install_Dir" "$INSTDIR"
 +
 +  ; Write the uninstall keys for Windows
 +  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VcXsrv" "DisplayName" "VcXsrv"
 +  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VcXsrv" "UninstallString" '"$INSTDIR\uninstall.exe"'
 +  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VcXsrv" "NoModify" 1
 +  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VcXsrv" "NoRepair" 1
 +  WriteUninstaller "uninstall.exe"
 +  
 +  ; Register the xlaunch file extension
 +  WriteRegStr HKCR ".xlaunch" "" "XLaunchFile"
 +  WriteRegStr HKCR "XLaunchFile" "" "XLaunch Configuration"
 +  WriteRegStr HKCR "XLaunchFile\DefaultIcon" "" "$INSTDIR\xlaunch.exe,0"
 +  WriteRegStr HKCR "XLaunchFile\shell" "" 'open'
 +  WriteRegStr HKCR "XLaunchFile\shell\open\command" "" '"$INSTDIR\XLaunch.exe" -run "%1"'
 +  WriteRegStr HKCR "XLaunchFile\shell\open\ddeexec\Application" "" "XLaunch"
 +  WriteRegStr HKCR "XLaunchFile\shell\open\ddeexec\Topic" "" "System"
 +  WriteRegStr HKCR "XLaunchFile\shell\edit\command" "" '"$INSTDIR\XLaunch.exe" -load "%1"'
 +  WriteRegStr HKCR "XLaunchFile\shell\edit\ddeexec\Application" "" "XLaunch"
 +  WriteRegStr HKCR "XLaunchFile\shell\edit\ddeexec\Topic" "" "System"
 +  WriteRegStr HKCR "XLaunchFile\shell\Validate\command" "" '"$INSTDIR\XLaunch.exe" -validate "%1"'
 +  WriteRegStr HKCR "XLaunchFile\shell\Validate\ddeexec\Application" "" "XLaunch"
 +  WriteRegStr HKCR "XLaunchFile\shell\Validate\ddeexec\Topic" "" "System"
 +
 +  WriteRegStr HKCR "Applications\xlaunch.exe\shell" "" 'open'
 +  WriteRegStr HKCR "Applications\xlaunch.exe\shell\open\command" "" '"$INSTDIR\XLaunch.exe" -run "%1"'
 +  WriteRegStr HKCR "Applications\xlaunch.exe\shell\open\ddeexec\Application" "" "XLaunch"
 +  WriteRegStr HKCR "Applications\xlaunch.exe\shell\open\ddeexec\Topic" "" "System"
 +  WriteRegStr HKCR "Applications\xlaunch.exe\shell\edit\command" "" '"$INSTDIR\XLaunch.exe" -load "%1"'
 +  WriteRegStr HKCR "Applications\xlaunch.exe\shell\edit\ddeexec\Application" "" "XLaunch"
 +  WriteRegStr HKCR "Applications\xlaunch.exe\shell\edit\ddeexec\Topic" "" "System"
 +  WriteRegStr HKCR "Applications\xlaunch.exe\shell\Validate\command" "" '"$INSTDIR\XLaunch.exe" -validate "%1"'
 +  WriteRegStr HKCR "Applications\xlaunch.exe\shell\Validate\ddeexec\Application" "" "XLaunch"
 +  WriteRegStr HKCR "Applications\xlaunch.exe\shell\Validate\ddeexec\Topic" "" "System"
 +
 +!ifdef VS2008
 +  InitPluginsDir
 +  SetOutPath $PLUGINSDIR
 +  File "${MSVCR90_DLL}"
 +  File "${MSVCM90_DLL}"
 +  File "${MSVCP90_DLL}"
 +  File "${MSVC_CAT}"
 +  File "${MSVC_MANIFEST}"
 +  File "${MSVCR90_DLL_D}"
 +  File "${MSVCM90_DLL_D}"
 +  File "${MSVCP90_DLL_D}"
 +  File "${MSVC_CAT_D}"
 +  File "${MSVC_MANIFEST_D}"
 +  DetailPrint "Installing CRT assembly..."
 +  System::Call "sxs::CreateAssemblyCache(*i .r0, i 0) i.r1"
 +  StrCmp $1 0 0 fail
 +  # Fill a FUSION_INSTALL_REFERENCE.
 +  # fir.cbSize = sizeof(FUSION_INSTALL_REFERENCE) == 32
 +  # fir.dwFlags = 0
 +  # fir.guidScheme = FUSION_REFCOUNT_UNINSTALL_SUBKEY_GUID
 +  # fir.szIdentifier = "nsissxs"
 +  # fir.szNonCanonicalData = 0
 +  System::Call "*(i 32, i 0, i 2364391957, i 1217113163, i 178634899, i 3090139977, w 'nsissxs', w '') i.s"
 +  Pop $2
 +  # IAssemblyCache::InstallAssembly(0, manifestPath, fir)
 +  System::Call "$0->7(i 0, w '$PLUGINSDIR\${MSVC_MANIFEST_PART}', i r2) i.r1"
 +  StrCmp $1 0 0 failcrt
 +  System::Call "$0->7(i 0, w '$PLUGINSDIR\${MSVC_MANIFEST_PART_D}', i r2) i.r1"
 +  StrCmp $1 0 0 faildebugcrt
 +  System::Free $2
 +  System::Call "$0->2()"
 +  Goto end
 +  
 +fail:
 +  DetailPrint "CreateAssemblyCache failed."
 +  DetailPrint $1
 +  Goto end
 +
 +failcrt:
 +  DetailPrint "InstallAssembly CRT failed."
 +  DetailPrint $1
 +  Goto end
 +faildebugcrt:
 +  DetailPrint "InstallAssembly Debug CRT failed."
 +  DetailPrint $1
 +  Goto end
 +end:
 +!endif
 +SectionEnd
 +
 +; Optional section (can be disabled by the user)
 +Section "Start Menu Shortcuts"
 +  SectionIn 1
 +
 +  SetOutPath $INSTDIR
 +  CreateDirectory "$SMPROGRAMS\VcXsrv"
 +  CreateShortCut "$SMPROGRAMS\VcXsrv\Uninstall VcXsrv.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
 +  CreateShortCut "$SMPROGRAMS\VcXsrv\VcXsrv.lnk" "$INSTDIR\vcxsrv.exe" " :0 -ac -terminate -lesspointer -multiwindow -clipboard -wgl" "$INSTDIR\vcxsrv.exe" 0
 +  CreateShortCut "$SMPROGRAMS\VcXsrv\XLaunch.lnk" "$INSTDIR\xlaunch.exe" "" "$INSTDIR\xlaunch.exe" 0
 +
 +SectionEnd
 +
 +; Optional section (can be disabled by the user)
 +Section "Desktop Shortcuts"
 +  SectionIn 1
 +
 +  SetOutPath $INSTDIR
 +  CreateShortCut "$DESKTOP\VcXsrv.lnk" "$INSTDIR\vcxsrv.exe" " :0 -ac -terminate -lesspointer -multiwindow -clipboard -wgl" "$INSTDIR\vcxsrv.exe" 0
 +  CreateShortCut "$DESKTOP\XLaunch.lnk" "$INSTDIR\xlaunch.exe" "" "$INSTDIR\xlaunch.exe" 0
 +
 +SectionEnd
 +
 +;--------------------------------
 +
 +; Uninstaller
 +
 +Section "Uninstall"
 +  
 +  ; Remove registry keys
 +  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VcXsrv"
 +  DeleteRegKey HKLM SOFTWARE\VcXsrv
 +
 +  ; Register the xlaunch file extension
 +  DeleteRegKey HKCR ".xlaunch"
 +  DeleteRegKey HKCR "XLaunchFile"
 +  DeleteRegKey HKCR "Applications\xlaunch.exe"
 +
 +  ; Remove files and uninstaller
 +  Delete "$INSTDIR\vcxsrv.exe"
 +  Delete "$INSTDIR\vcxsrv_dbg.exe"
 +  Delete "$INSTDIR\vcxsrv_dbg.pdb"
 +  Delete "$INSTDIR\uninstall.exe"
 +  Delete "$INSTDIR\protocol.txt"
 +  Delete "$INSTDIR\system.XWinrc"
 +  Delete "$INSTDIR\xkbcomp.exe"
 +  Delete "$INSTDIR\xcalc.exe"
 +  Delete "$INSTDIR\xcalc"
 +  Delete "$INSTDIR\xcalc-color"
 +  Delete "$INSTDIR\xclock.exe"
 +  Delete "$INSTDIR\xwininfo.exe"
 +  Delete "$INSTDIR\XKeysymDB"
 +  Delete "$INSTDIR\XErrorDB"
 +  Delete "$INSTDIR\xlaunch.exe"
 +  Delete "$INSTDIR\plink.exe"
 +  Delete "$INSTDIR\swrast_dri.dll"
 +  Delete "$INSTDIR\swrast_dri_dbg.dll"
 +!ifndef VS2008
 +  Delete "$INSTDIR\msvcr100.dll"
 +  Delete "$INSTDIR\msvcp100.dll"
 +  Delete "$INSTDIR\msvcr100d.dll"
 +!endif
 +
 +  RMDir /r "$INSTDIR\fonts"
 +  RMDir /r "$INSTDIR\xkbdata"
 +  RMDir /r "$INSTDIR\locale"
 +
 +  ; Remove shortcuts, if any
 +  Delete "$SMPROGRAMS\VcXsrv\*.*"
 +  Delete "$DESKTOP\VcXsrv.lnk"
 +  Delete "$DESKTOP\XLaunch.lnk"
 +
 +  ; Remove directories used
 +  RMDir "$SMPROGRAMS\VcXsrv"
 +  RMDir "$INSTDIR"
 +
 +;  Currently disable uninstalling the run-time; because sometimes it is removing
 +;  the run-time although other applications are using them
 +;  DetailPrint "Removing CRT assembly..."
 +;  System::Call "sxs::CreateAssemblyCache(*i .r0, i 0) i.r1"
 +;  StrCmp $1 0 0 fail
 +;  System::Call "*(i 32, i 0, i 2364391957, i 1217113163, i 178634899, i 3090139977, w 'nsissxs', w '') i.s"
 +;  Pop $2
 +;  System::Call "$0->3(i 0, w 'Microsoft.VC90.CRT,version=$\"9.0.${MSVC_VERSION}$\",type=$\"win32$\",processorArchitecture=$\"x86$\",publicKeyToken=$\"${MSVC_PUBLICTOKEN}$\"', i r2, *i . r3) i.r1"
 +;  StrCmp $1 0 0 failcrt
 +;  System::Call "$0->3(i 0, w 'Microsoft.VC90.DebugCRT,version=$\"9.0.${MSVC_VERSION_D}$\",type=$\"win32$\",processorArchitecture=$\"x86$\",publicKeyToken=$\"${MSVC_PUBLICTOKEN}$\"', i r2, *i . r3) i.r1"
 +;  StrCmp $1 0 0 faildebugcrt
 +;  DetailPrint "Disposition returned is $3"
 +;  System::Free $2
 +;  System::Call "$0->2()"
 +;  Goto end
 +;  fail:
 +;  DetailPrint "CreateAssemblyCache failed."
 +;  DetailPrint $1
 +;  Goto end
 +;  failcrt:
 +;  DetailPrint "UninstallAssembly CRT failed."
 +;  DetailPrint $1
 +;  Goto end
 +;  faildebugcrt:
 +;  DetailPrint "UninstallAssembly Debug CRT failed."
 +;  DetailPrint $1
 +;  Goto end
 +;end:
 +
 +SectionEnd
 +
 | 
