miércoles, 18 de marzo de 2015

Crea tu propio autorun para tus repacks

1

Y siguiendo con mi aprendizaje en Autoit esta vez les traigo un código en autoit para que podáis hacer vuestros propios autoruns en los repack con InnoSetup y Freearc que realicéis.
Básicamente el código verifica la instalación de tu repack por lo que yo recomiendo poner vuestras instalaciones la APPID del nombre del juego o programa para hacerlo mucho mas sencillo.
Tomamos como ejemplo “Cities Skilines”, lo 1º ha sido poner en la instalación de mi repack la APPID:

En el script del InnoSetup:

#define AppName "Cities Skilines"

[Setup]
AppID={#AppName}


Con esto creará en el registro al instalar la linea:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Cities Skylines_is1

Ahora ya tenemos lo esencial, creamos el formulario en Autoit (recomiendo Koda)

3

Una vez tengamos el formulario creamos ya el código:

con esto, verificamos que el juego esta instalado:

$Reg=RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Cities Skylines_is1","InstallLocation")


Si no se ha detectado la línea, los botones Lanzar y desinstalar no se habilitarán.

if @error= 1 then
GUICtrlSetState($Button1, $GUI_DISABLE)
GUICtrlSetState($Button2, $GUI_DISABLE)
EndIf



Con esta variable descubrimos el desinstalador para el botón desinstalar:

$Reg2= RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Cities Skylines_is1","UninstallString")


Aquí lanzamos el ejecutable con el botón lanzar:

case $Button1
Run ($Reg & "Cities.exe")



Y con esto lanzamos en desinstalador:

case $Button2
Run ($Reg2)
exit



Este botón verifica que se encuentra el “setup.exe” para instalarlo,si no lo encuentra lanza el mensaje que debes ejecutar la instalación en la unidad o carpeta donde este ubicado el “setup.exe”


case $Button3
if not FileExists ("setup.exe") Then
MsgBox($MB_OK+$MB_ICONERROR, "Error", "Tienes que ejecutar la instalación desde la unidad o carpeta en la que se encuentre el archivo setup.exe")
else
run ("setup.exe")
EndIf



Quedaría un ultimo botón que seria el de salir, ¿este es fácil no?
case $Button4
exit



Os pongo ahora el codigo completo para que podair entenderlo mejor y el resultado de como quedaría:





#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>


#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 394, 219, 192, 124)
GUISetBkColor(0xFFFFFF)
$Button1 = GUICtrlCreateButton("Lanzar", 8, 184, 75, 25)
$Button2 = GUICtrlCreateButton("Desinstalar", 112, 184, 75, 25)
$Button3 = GUICtrlCreateButton("Instalar", 200, 184, 75, 25)
$Button4 = GUICtrlCreateButton("Salir", 304, 184, 75, 25)
$Pic1 = GUICtrlCreatePic("img.jpg", 8, 8, 372, 164)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$Reg= RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Cities Skylines_is1","InstallLocation")
if @error= 1 then
GUICtrlSetState($Button1, $GUI_DISABLE)
GUICtrlSetState($Button2, $GUI_DISABLE)
EndIf

$Reg2= RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Cities Skylines_is1","UninstallString")


While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit

case $Button1
Run ($Reg & "Cities.exe")

case $Button2
Run ($Reg2)
exit

case $Button3
if not FileExists ("setup.exe") Then
MsgBox($MB_OK+$MB_ICONERROR, "Error", "Tienes que ejecutar la instalación desde la unidad o carpeta en la que se encuentre el archivo setup.exe")
else
run ("setup.exe")
EndIf

case $Button4
exit

EndSwitch
WEnd



Botones activados, detecto el juego instalado:

1


Botones desactivados, no esta el juego instalado:

2

0 comentarios :

Publicar un comentario