Instalador que agrega entrada a los scripts de inicio de GPO
Pregunta
Estoy en el proceso de escribir un instalador que usa NSIS que agregará una entrada al GPO de la computadora para ejecutar un comando en el arranque del sistema.
# From http://nsis.sourceforge.net/LGP_Startup/Shutdown_Script
!include LGPScript.nsh
Section
SetOutPath -
# Install all files from myprog directory into C:\Program Files\myprog
File myprog\*
# Copy mysystweak.bat to System32\GroupPolicy\Machine\Scripts\Startup
SetOutPath $SYSDIR\GroupPolicy\Machine\Scripts\Startup
File myprog\mysystweak.bat
SetOutPath -
# Add GPO entry to execute mysystweak.bat on startup
${LGPScript::Create} 'Startup' 'mysystweak.bat' '' $R1
DetailPrint "Create startup LGP return code:$R1"
# Write uninstaller
Writeuninstaller "${uninstall_name}"
SectionEnd
Todo va bien excepto que nada aparece en ... startup. El instalador cree que todo funcionó:
Output folder: C:\WINDOWS\system32\GroupPolicy\Machine\Scripts\Startup
Extract: mysystweak.bat... 100%
Output folder: C:\Program Files (x86)\myprog
Originalmente intenté usar CopyFiles para copiar el archivo por lotes de $ instdir en ... startup, pero obtuve el mismo resultado.
¿Qué va mal aquí?
relacionado: https://serverfault.com/q/266338/2101
Solución
Si este es un sistema X64, debe deshabilitar la redirección FS, sin él $ sysdir no apuntará al directorio verdadero System32:
!include x64.nsh
Section
...
SetOutPath $SYSDIR\GroupPolicy\Machine\Scripts\Startup
${DisableX64FSRedirection}
File myprog\mysystweak.bat
${EnableX64FSRedirection}
...
SectionEnd
Puede verificar que este sea el problema observando el instalador con Monitor de proceso
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow