Hum, perdona que sospeche pero no sabes cómo comprobar algo tan sencillo como la macro
@error, tienes tres códigos
que no has probado (o sea, que tampoco son tuyos), ¡y estás intentando instalar nada menos que un servicio! Espero que tus intenciones sean buenas...
¿Estás seguro que lo que quieres es que tu programa se inicie con la sesión? Hay una manera mucho más sencilla que instalar servicios del sistema: pon un acceso directo en la carpeta
Programas\Inicio. Si quieres hacerlo por código puedes usar las macros
@StartupCommonDir o
@StartupDir
Respecto a los errores pues sólo se trata de comprobar si ha habido error, y si es así pasar al siguiente método, si no hay error hemos terminado. Hay que mirar la documentación para ver cómo da cada función el error, ciertamente
AutoIt ofrece el mecanismo de la macro
@error pero hay funciones que necesitan dar más información que un simple código de error y usan otros métodos o usan sistemas complementarios. Será bastante raro que no usen
@error pero no está de más mirarlo en la documentación.
En tu caso (aunque repito, lo del servicio es sobrecomplicarse para la tarea que quieres hacer) por ejemplo
RegWrite efectivamente usa
@error, devuelve hasta 5 códigos diferentes de error,
0 si es correcto. Además la propia función devuelve 1 cuando se ha ejecutado correctamente, así que esa es otra manera de comprobarlo.
La librería
ServiceControl no la tengo, así que no puedo mirar sus funciones, pero será algo parecido.
La cosa es que simplemente hay que comprobar @error para ver si falla y actuar en consecuencia. El esquema podría ser el siguiente:
Código: Seleccionar todo
Método 1
If @error Then
Método 2
If @error Then
Método 3
EndIf
EndIf
Si hay muchos métodos puedes simplificar el anidamiento de
IF si se finaliza el script cuando se encuentra uno que no da error:
Código: Seleccionar todo
Método 1
If Not @error Then Exit
Método 2
If Not @error Then Exit
Método 3
Este sería el caso general, como digo hay que mirar la documentación cada función. En el caso de
RegWrite, ya que la función devuelve el estado de la ejecución, lo normal será mirarlo por ahí.