Tengo un programa que instalo usando un script NSIS. El último paso en el instalador es escribir en la clave Ejecutar del registro y hacer que el programa se ejecute al inicio. He confirmado que bajo
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
existe la clave
MyCompany Program - C:\MyCompany\Program\launch.vbs
Probé la clave con y sin comillas pero no hubo ningún impacto. He confirmado que el registro está leyendo desde CurrentVersion\Run agregando
Notepad - C:\windows\notepad.exe
y el Bloc de notas ahora se inicia al inicio. El script launch.vbs es una sola línea para iniciar un script sin la ventana cmd.exe:
'HideBat.vbs from https://superuser.com/questions/140047/how-to-run-a-batch-file-without-launching-a-command-window
CreateObject("Wscript.Shell").Run "cmd /c " & chr(34) & "C:\MyCompany\Program\run.cmd " & chr(34), 0, True
He confirmado que llamar a launch.vbs desde una ventana del explorador o desde cmd.exe funciona como esperaba (iniciar mi programa). msconfig confirma que C:\MyCompany\Program\launch.vbs aparece en la pestaña de inicio. La pestaña de seguridad de Propiedades del archivo indica que todos los usuarios deben tener privilegios de lectura y ejecución. Lo mismo ocurre con el run.cmd que realmente se llama.
En este punto, no sé por qué no se inicia mi programa y no puedo encontrar una manera eficiente de depurarlo.
El sistema es Windows 7 Professional de 64 bits.
Respuesta1
Con la ayuda de LPChip, comencé la depuración del cuadro de mensajes y confirmé que el script se estaba iniciando, pero se producía un error. Actualicé launch.vbs a
CreateObject("Wscript.Shell").Run "cmd /k " & chr(34) & "C:\MyCompany\Program\run.cmd " & chr(34), 1, True
(tenga en cuenta /k para mantener activa la ventana y 1 para mostrar). A partir de ahí, era evidente que Java no está configurado en el classpath para scripts iniciados a través de CurrentVersion\Run. Codificar la ruta a Java (que nuestros clientes se verán obligados a usar de todos modos) en run.cmd resolvió el problema.