# Tämä scripti asentaa Kaunotar Kassajärjestelmää varten tarvittavia osia
!define VERSION "0.9.3"
Name "Kaunotar Installer ${VERSION}"

# Luotavan exen nimi
outFile "Kaunotar Installer ${VERSION}.exe"

!include ZipDLL.nsh
!include FindProcess.nsh
!include FontReg.nsh
!include FontName.nsh
!include WinMessages.nsh
!include LogicLib.nsh
!include x64.nsh

# Uninstaller tänne
# installDir C:\Kaunotar
RequestExecutionLevel admin

# Luodaan funktio mahdollistamaan käyttäjän tiedostonhaku
# ------------------------------------------------------------------------------------

Function FileRequest
Exch $0 ;title
Exch 4
Exch $R5 ;flag
Exch 3
Exch $R4 ;Save/Open
Exch 2
Exch $2 ;sort type 2
Exch
Exch $1 ;sort type 1
Push $3
Push $4
Push $5 ;type 1 / 1
Push $6 ;tupe 1 / 2
Push $7 ;type 2 / 1
Push $8 ;type 2 / 2
Push $9
Push $R0 ;len 1 / 1
Push $R1 ;len 1 / 2
Push $R2 ;len 2 / 1
Push $R3 ;len 2 / 2
 
StrCmp $R5 "" 0 +2
 StrCpy $R5 0xA01800
 
StrCpy $9 $0 ;title
 
StrCpy $3 0
loop1:
 IntOp $3 $3 - 1
  StrCpy $4 $2 1 $3
 StrCmp $4 "" error
 StrCmp $4 "|" 0 loop1
StrCpy $5 $2 $3
 IntOp $3 $3 + 1
StrCpy $6 $2 "" $3
 
StrCpy $3 0
loop2:
 IntOp $3 $3 - 1
  StrCpy $4 $1 1 $3
 StrCmp $4 "" error
 StrCmp $4 "|" 0 loop2
StrCpy $7 $1 $3
 IntOp $3 $3 + 1
StrCpy $8 $1 "" $3
 
StrLen $R0 $5
 IntOp $R0 $R0 + 1
StrLen $R1 $6
 IntOp $R1 $R1 + 1
StrLen $R2 $7
 IntOp $R2 $R2 + 1
StrLen $R3 $8
 IntOp $R3 $R3 + 1
 
 StrCpy $4 '(&l4, i, i 0, i, i 0, i 0, i 0, t, i ${NSIS_MAX_STRLEN}, t, i ${NSIS_MAX_STRLEN}, t, t, i, &i2, &i2, t, i 0, i 0, i 0) i'
 
 System::Call '*(&t$R0 "$5" , &t$R1 "$6", &t$R2 "$7", &t$R3 "$8", &i1 0) i.r0'
 
 System::Call '*$4(, $HWNDPARENT,, r0,,,,"",,"",, i 0, "$9", $R5,,,,,,) .r1'
 
 System::Call 'comdlg32::Get$R4FileNameA(i r1) i .r2'
 System::Call '*$1$4(,,,,,,,.r3)'
 System::Free $1
 System::Free $0
 
StrCmp $2 0 0 +2
error:
 StrCpy $3 error
StrCpy $0 $3
 
Pop $R3
Pop $R2
Pop $R1
Pop $R0
Pop $9
Pop $8
Pop $7
Pop $6
Pop $5
Pop $4
Pop $3
Pop $1
Pop $2
Pop $R4
Pop $R5
Exch $0
FunctionEnd

# -----------------------------------------------------------------------------------------------

# Installerin sivut
Page components
Page instfiles

# Openvpn asennus sektio
section "Openvpn asennus"

	# Tekee ilmoituksen
	MessageBox MB_YESNO "Asenna OpenVPN?" /SD IDYES IDNO endVpn

	# Käynnistää openvpn installer
	# setOutPath $INSTDIR	
	
	${If} ${RunningX64}
		# 64 bit code
		# File "openvpn-install-2.3.5-I001-x86_64.exe"
		ExecWait '"openvpn-install-2.3.6-I603-x86_64.exe"  /SP- /SILENT'
	${Else}
		# 32 bit code
		ExecWait '"openvpn-install-2.3.6-I603-i686.exe"  /SP- /SILENT'
	${EndIf}  

endVpn:
sectionEnd

section "ovpn asennuspaikka"
	ReadRegStr $0 HKLM SOFTWARE\OpenVPN "config_dir"
	DetailPrint "openVpn is installed at: $0"
sectionEnd


# Openvpn pikakuvakesektio
section "Openvpn Salattu yhteys kassaan"
ReadRegStr $1 HKLM "SOFTWARE\OpenVpn" ""
	# Tehdään työpöydälle pikakuvake asennuskansion openvpn.exestä
	# createShortCut "$DESKTOP\Salattu yhteys kassaan.lnk" "$1\bin\openvpn-gui.exe" "--connect kaunotar.ovpn"
	createShortCut "$DESKTOP\Salattu yhteys kassaan.lnk" "C:\Program Files\OpenVPN\bin\openvpn-gui.exe" "--connect kaunotar.ovpn"

	# suoritetaanko pikakuvake järjestelmänvalvojana
	ShellLink::SetRunAsAdministrator "$DESKTOP\Salattu yhteys kassaan.lnk"

		#Tarkistetaan virheet
		Pop $0
		DetailPrint "SetRunAsAdministrator: $0"
		DetailPrint ""

sectionEnd

section "Openvpn conf tiedostot ja avaimet"
	# Viedään conf tiedosto oikeaan paikkaansa
	 ReadRegStr $1 HKLM "SOFTWARE\OpenVpn" "config_dir"
	# setOutPath "$1"
	setOutPath "C:\Program Files\OpenVPN\config"
	file kaunotar.ovpn

	# Annetaan käyttäjän etsiä funktiolla filerequest avaimet.zip ja puretaan sisältö oikeaan paikkaan
	MessageBox MB_YESNO "Haluatko paikallistaa zip pakatut avaimet? Valitse no ohittaaksesi vaiheen" /SD IDYES IDNO endKeys
	Push "0xA01800"
	Push "Open"
	Push "Zip Files (*.zip)|*.zip"
	Push "All Files (*.*)|*.*"
	Push "Pakattujen avainten sijainti"
	Call FileRequest
	Pop $R0

	#	ZipDLL::extractall "$R0" "$1"
	ZipDLL::extractall "$R0" "C:\Program Files\OpenVPN\config"

endKeys:
sectionEnd

section "Firefox - js print"

# Tarkistetaan onko firefox asennettu ja etsitään polku rekisteristä
ReadRegStr $1 HKLM "SOFTWARE\Mozilla\Mozilla Firefox" "CurrentVersion"
ReadRegStr $1 HKLM "SOFTWARE\Mozilla\Mozilla Firefox\$1\Main" "PathToExe"


${If} $1 == NULL
MessageBox MB_YESNO "Firefoxia ei asennettu. Haluatko asentaa sen nyt?" /SD IDYES IDNO endFF
${else}
messageBox MB_OK "Firefox polussa <$1>"
${EndIf}
# nsExec::Exec '$1 "js_print_setup-0.9.2-fx.xpi"'
nsExec::Exec '$1 "https://addons.mozilla.org/en-US/firefox/addon/js-print-setup/"'
createShortCut "$DESKTOP\KaunotarKassa.lnk" "$1" 

endFF:
sectionEnd

Section "Viivakoodifontti"
ReadRegStr $1 HKLM "SOFTWARE\Mozilla\Mozilla Firefox" "CurrentVersion"
ReadRegStr $1 HKLM "SOFTWARE\Mozilla\Mozilla Firefox\$1\Main" "PathToExe"
nsExec::Exec '$1 "http://tinyurl.com/free3of9"'


#  SetOutPath "$FONTS"
#  File "b3of92.ttf"
#  StrCpy $FONT_DIR $FONTS 
#  !insertmacro FontName "$FONTS/b3of92.ttf"
#  !insertmacro InstallTTFFont 'b3of92.ttf' 
#  SendMessage ${HWND_BROADCAST} ${WM_FONTCHANGE} 0 0 /TIMEOUT=5000
SectionEnd

Section "Team Viewer"	
	SetOutPath $DESKTOP
	File "TeamViewerQS_fi.exe"
SectionEnd

Section "Asennuksen poisto" SEC01
  SectionIn RO
WriteUninstaller "$INSTDIR\Uninstall.exe"
WriteRegStr HKLM "$INSTDIR\Uninstall.exe" \
                 "DisplayName" "Kaunotar Kassa"
createShortCut "$SMPROGRAMS\Kaunotar UNINSTALL.lnk" "$INSTDIR\Uninstall.exe"
SectionEnd



section "Uninstall"
MessageBox MB_YESNO "Varoitus! Haluatko todella poistaa kaikki yhteydet kaunottareen mukaanlukien Openvpn ohjelman ja firefox profiilin?" /SD IDYES IDNO endun
Delete "$DESKTOP\Salattu yhteys kassaan.lnk"
ReadRegStr $1 HKLM "SOFTWARE\OpenVpn" "config_dir"
Delete "$1"
ReadRegStr $2 HKLM "SOFTWARE\OpenVpn" ""
SetOutPath "$TEMP"
Delete "$DESKTOP\KaunotarKassa.lnk"
ExecWait '"$2\Uninstall.exe"  /SP- /SILENT'
endun:
SectionEnd