;=== FORMAÇÕES O SEU PROGRAMA PORTÁTIL
!define app "x"
WindowIcon Off
SilentInstall silent
AutoCloseWindow true
RequestExecutionLevel admin
XPStyle on
CRCCheck on

; AQUI VOCÊ COLOCA O TIPO DE COMPRESSÃO
SetCompress auto
SetCompressor /SOLID lzma
SetCompressorDictSize 32
SetDatablockOptimize on

;AQUI VOCÊ COLOCA AS INFORMAÇÕES MAIS IMPORTANTES
OutFile ..\${app}.exe
Icon "1.ico"
!include "registry.nsh"


;PASTA  E FUNÇÃO DAS PASTAS
Function pastas
!define systema			"-"
!define portable			"-"
CreateDirectory "${systema}"
CreateDirectory "${portable}"
FunctionEnd

Function Copiar_Para_Systema
CopyFiles /SILENT			"${portable}\*.*" "${systema}"
FunctionEnd

Function Copiar_Para_o_Portable
CopyFiles /SILENT			"${systema}\*.*" "${portable}"
FunctionEnd


;;;AQUI VOCÊ COLOCA AS INFORMAÇÕES E FUNÇÕES DO REGISTRO
Function registro
!define k1			"-"
!define k2			"-"
FunctionEnd

;;;RESTAURAR CHAVE DE REGISTRO PARA DENTRO DO SISTEMA
Function reskey
		${registry::RestoreKey} "$EXEDIR\Data\${app}Portable.reg" $R0
	Sleep 123
Delete "$EXEDIR\Data\${app}Portable.reg"
FunctionEnd

;;; ESSA FUNÇÃO SALVAR A CHAVE DE DENTRO DO SISTEMA PARA DENTRO DA PASTA "DATA"
Function savekey
		${registry::SaveKey}	"${k1}" "$EXEDIR\Data\${app}Portable.reg" "/A=1"$R0
		${registry::SaveKey}	"${k2}" "$EXEDIR\Data\${app}Portable.reg" "/A=1"$R0
FunctionEnd

;;;DELETA AS CHAVES DO SISTEMA
Function delkeys
		${registry::DeleteKey} "${K1}" $R0
		${registry::DeleteKey} "${k2}" $R0
		Sleep 100
		${registry::Unload}
FunctionEnd


;; VOCÊ COLOCA O CAMINHO DO PROGRAMA EXECUTÁVEL
Function exe
ExecWait "App\x\x.exe"
newadvsplash::stop
FunctionEnd

;; AQUI VOCÊ COLOCA A FUNÇÃO DE SPLASH SCREEN "so nude a imagem ,BMP que esta nessa pasta"
Function Splash
InitPluginsDir
File /oname=$TEMP\splash.bmp "splash.bmp"
newadvsplash::show /NOUNLOAD 300 500 300 0xFF00FF $TEMP\splash.bmp
	Pop $0
FunctionEnd


;;; AKI VOCÊ COLOCA FUNÇÕES DE DELETAR DIRETÓRIOS
Function deldir
SetOutPath "${systema}"
RMdir "/r"  "${systema}"
SetOutPath "$TEMP"
RMdir "/r" "$TEMP"
FunctionEnd


;;;ESSA É A PARTE MAIS IMPORTANTE ONDE VOCÊ COLOCA EM ORDEM AS FUNÇÕES ACIMA
Section "main"
Call pastas
Call registro
Call Copiar_Para_Systema
Call reskey

Call Splash
Sleep 200
Call exe

Call Copiar_Para_o_Portable
Call savekey
Call delkeys
Call deldir
SectionEnd