Table of Contents

XMind 3.2.1

2012-12-12
Script by uib gmbh
Comments and improvements welcome
Tested with opsi 4.0.2

type: localboot
id: xmind
name: xmind
description: XMind brainstorming and mind mapping software
version: 3.2.1

Requires javavm. So make a dependency.

Full package: http://download.uib.de/opsi4.0/products/contribute/full-package/

setup.ins

; Copyright (c) uib gmbh (www.uib.de)
; This sourcecode is owned by uib
; and published under the Terms of the General Public License.
; credits: http://www.opsi.org/en/credits/
 
[Actions]
requiredWinstVersion >= "4.11.2.6"
 
DefVar $LogDir$
DefVar $ProductId$  
DefVar $MinimumSpace$
DefVar $InstallDir$
DefVar $ExitCode$
DefVar $Install_Prog$
DefVar $Install_Cmd$
DefVar $Version$
DefVar $Executable$
DefVar $UninstallProgram$
DefVar $appdata$
 
Set $LogDir$ = "%SystemDrive%\opsi.org\tmp"
 
 
; ----------------------------------------------------------------
; - Please edit the following values                             -
; ----------------------------------------------------------------
Set $ProductId$       = "xmind"
Set $MinimumSpace$    = "46 MB"
; the path were we find the product after the installation
Set $InstallDir$      = "%ProgramFiles32Dir%\XMind"
Set $Install_Prog$	= "xmind-win-3.2.1.201011212218.exe"
Set $Version$ = "3.2.1"
Set $Executable$ = $InstallDir$ + "\xmind.exe"
 
; ----------------------------------------------------------------
 
if not(HasMinimumSpace ("%SystemDrive%", $MinimumSpace$))
	LogError "Not enough space on %SystemDrive%, " + $MinimumSpace$ + " on drive %SystemDrive% needed for " + $ProductId$
	isFatalError
	; Stop process and set installation status to failed
else
	comment "Show product picture"
	ShowBitmap "%ScriptPath%\xmind-icon.png" $ProductId$
 
	if FileExists($InstallDir$)
		comment "Start uninstall sub section"
		Sub "%ScriptPath%\delsub.ins"
	endif
 
	Message "Installing " + $ProductId$ + " ..."
 
	comment "Start setup program"
	Winbatch_install
	Sub_check_exitcode
	sub_Checkxmind
 
	set $appdata$ = "Application data"
	comment "'Application data' is used even on a non english XPor on win7"
	Files_installprefs_profiles /AllNtUserProfiles  
 
	comment "desktop icon ..."
	LinkFolder_install
 
	comment "use xmind for freemind and mindmanager files ..." 
	Registry_install /32bit
endif
 
[sub_Checkxmind]
comment "Check if "+$InstallDir$+"  Exists"
if FileExists($InstallDir$)
	comment "install dir "+$InstallDir$+" exists"
else
	comment "InstallDir "+$InstallDir$+" does NOT exist"
	LogError "Did not find the InstallDir "+$InstallDir$+". Maybe a fatal build, so calling isFatalError"
	isFatalError
endif
 
[Winbatch_install]
"%ScriptPath%\xmind-win-3.2.1.201011212218.exe" /S
 
[Files_installprefs_profiles]
; This third line copies the file to the Commons\ in each user's profile directory, which is used when an xmind file is clicked
copy  "%ScriptPath%\net.xmind.verify.prefs" "%UserProfileDir%\$appdata$\xmind\workspace-cathy\.metadata\.plugins\org.eclipse.core.runtime\.settings\"
copy  "%ScriptPath%\org.xmind.cathy.prefs" "%UserProfileDir%\$appdata$\xmind\workspace-cathy\.metadata\.plugins\org.eclipse.core.runtime\.settings\"
del "%UserProfileDir%\Desktop\XMind.lnk"
 
[LinkFolder_install]
set_basefolder common_desktopdirectory
set_subfolder "" 
set_link
 	name: $ProductId$
 	target: $Executable$
 	parameters:
 	working_dir: $InstallDir$
 	icon_file:
	icon_index:
end_link
 
set_basefolder common_programs
set_subfolder "XMind" 
set_link
 	name: $ProductId$
 	target: $Executable$
 	parameters:
 	working_dir: $InstallDir$
 	icon_file:
	icon_index:
end_link
 
[Registry_install]
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.mm]
set ""="mmfile"
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.mmap]
set ""="mmapfile"
set "Content Type"="application/vnd.mindjet.mindmanager"
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mmapfile]
set ""="MindManager File"
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mmapfile\DefaultIcon]
set ""='"%ProgramFiles32Dir%\XMind\xmind_file.ico"'
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mmapfile\Shell\Open\Command]
set ""='"%ProgramFiles32Dir%\XMind\xmind.exe" %1'
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mmfile]
set ""="FreeMind File"
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mmfile\DefaultIcon]
set ""='"%ProgramFiles32Dir%\XMind\xmind_file.ico"'
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mmfile\Shell\Open\Command]
set ""='"%ProgramFiles32Dir%\XMind\xmind.exe" %1'
 
 
[Sub_check_exitcode]
comment "Test for installation success via exit code"
set $ExitCode$ = getLastExitCode
; informations to exit codes see
; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx
; http://msdn.microsoft.com/en-us/library/aa368542.aspx
if ($ExitCode$ = "0")
	comment "Looks good: setup program gives exitcode zero"
else
	comment "Setup program gives a exitcode unequal zero: " + $ExitCode$
	if ($ExitCode$ = "1605")
		comment "ERROR_UNKNOWN_PRODUCT	1605	This action is only valid for products that are currently installed."
		comment "Uninstall of a not installed product failed - no problem"
	else
		if ($ExitCode$ = "1641")
			comment "looks good: setup program gives exitcode 1641"
			comment "ERROR_SUCCESS_REBOOT_INITIATED	1641	The installer has initiated a restart. This message is indicative of a success."
			Exitwindows /Reboot
		else
			if ($ExitCode$ = "3010")
				comment "looks good: setup program gives exitcode 3010"
				comment "ERROR_SUCCESS_REBOOT_REQUIRED	3010	A restart is required to complete the install. This message is indicative of a success."
				Exitwindows /Reboot
			else
				logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$
				isFatalError
			endif
		endif
	endif
endif

delsub.ins

; Copyright (c) uib gmbh (www.uib.de)
; This sourcecode is owned by uib gmbh
; and published under the Terms of the General Public License.
; credits: http://www.opsi.org/en/credits/
 
 
Set $UninstallProgram$ = $InstallDir$ + "\uninstall.exe"
 
Message "Uninstalling " + $ProductId$ + " ..."
 
if FileExists($UninstallProgram$)
	comment "Uninstall program found, starting uninstall"
	Winbatch_uninstall /WaitforProcessending "Au_.exe" /Timeoutseconds 10
	sub_check_exitcode
endif
 
comment "Delete files"
Files_uninstall /32Bit
 
comment "Delete linkFolder"
LinkFolder_delete
 
comment "del file associations to freemind and mindmanager ..."
Registry_uninstall
 
[Winbatch_uninstall]
; === Nullsoft Scriptable Install System ================================================================
"$UninstallProgram$" /S
 
[Files_uninstall]
del -sf "$InstallDir$\"
 
[LinkFolder_delete]
set_basefolder common_desktopdirectory
set_subfolder "" 
delete_element $ProductId$
set_basefolder common_programs
delete_subfolder "XMind" 
 
[Registry_uninstall]
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mmapfile\DefaultIcon]
DeleteVar ""
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mmapfile\Shell\Open\Command]
DeleteVar ""
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mmfile\DefaultIcon]
DeleteVar ""
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\mmfile\Shell\Open\Command]
DeleteVar ""
 
 
[Sub_check_exitcode]
comment "Test for installation success via exit code"
set $ExitCode$ = getLastExitCode
; informations to exit codes see
; http://msdn.microsoft.com/en-us/library/aa372835(VS.85).aspx
; http://msdn.microsoft.com/en-us/library/aa368542.aspx
if ($ExitCode$ = "0")
	comment "Looks good: setup program gives exitcode zero"
else
	comment "Setup program gives a exitcode unequal zero: " + $ExitCode$
	if ($ExitCode$ = "1605")
		comment "ERROR_UNKNOWN_PRODUCT	1605	This action is only valid for products that are currently installed."
		comment "Uninstall of a not installed product failed - no problem"
	else
		if ($ExitCode$ = "1641")
			comment "looks good: setup program gives exitcode 1641"
			comment "ERROR_SUCCESS_REBOOT_INITIATED	1641	The installer has initiated a restart. This message is indicative of a success."
			Exitwindows /Reboot
		else
			if ($ExitCode$ = "3010")
				comment "looks good: setup program gives exitcode 3010"
				comment "ERROR_SUCCESS_REBOOT_REQUIRED	3010	A restart is required to complete the install. This message is indicative of a success."
				Exitwindows /Reboot
			else
				logError "Fatal: Setup program gives an unknown exitcode unequal zero: " + $ExitCode$
				isFatalError
			endif
		endif
	endif
endif

uninstall.ins

; Copyright (c) uib gmbh (www.uib.de)
; This sourcecode is owned by uib gmbh
; and published under the Terms of the General Public License.
; credits: http://www.opsi.org/en/credits/
 
[Actions]
requiredWinstVersion >= "4.11.2.6"
 
DefVar $LogDir$
DefVar $ExitCode$
DefVar $ProductId$
DefVar $InstallDir$
DefVar $UninstallProgram$
 
Set $LogDir$ = "%SystemDrive%\opsi.org\tmp"
 
; ----------------------------------------------------------------
; - Please edit the following values                             -
; ----------------------------------------------------------------
Set $ProductId$       = "xmind"
Set $InstallDir$      = "%ProgramFiles32Dir%\XMind"
; ----------------------------------------------------------------
 
 
comment "Show product picture"
ShowBitmap "%ScriptPath%\xmind-icon.png" $ProductId$
 
Message "Uninstalling " + $ProductId$ + " ..."
 
if FileExists($InstallDir$)
	comment "Start uninstall sub section"
	Sub "%ScriptPath%\delsub.ins"
endif