La carpeta ProgramData es el mejor lugar para almacenar los archivos grabables de su aplicación compartidos por todos los usuarios. Pero cuando el instalador de Nsis se ejecuta con privilegios de administrador (que se requiere para escribir en Archivos de programa), las carpetas y los archivos creados en la carpeta ProgramData son de solo lectura para todos los usuarios excepto para el administrador. ¿Cómo cambiar eso y tener archivos grabables para todos los usuarios dentro de la carpeta ProgramData?Instalador de Nullsoft, cómo hacer que la subcarpeta ProgramData sea modificable
Respuesta
No sé si este comportamiento es una característica o un error, pero he encontrado una solución. Se necesita el complemento AccessControl (descargue y copie la carpeta de complementos de Nsis). Dentro de "instalación" de la escritura Nsis poner algo como esto:
; This is important to have $APPDATA variable
; point to ProgramData folder
; instead of current user's Roaming folder
SetShellVarContext all
; This sets us permissions
AccessControl::GrantOnFile "$APPDATA\Folder" "(S-1-5-32-545)" "FullAccess"
AccessControl::GrantOnFile "$APPDATA\Folder\*" "(S-1-5-32-545)" "FullAccess"
S-1-5-32-545 es equivalente a all users, por lo que este código le conceda acceso completo a la carpeta especificada y todos los archivos dentro de todos los usuarios.
o conjunto a través de línea de comandos (Win7 solamente): ExecWait 'Icacls "$ AppData \ carpeta"/otorgar a los usuarios: (OI) (CI) M'
windows server 2003 y superior en realidad :) – nawfal
- 1. ¿Hacer que la carpeta raíz web sea una subcarpeta con .htaccess?
- 2. Cómo hacer que la tarea sea deseable
- 3. ¿Cómo hacer que el archivo sea escaso?
- 4. Cómo hacer que strpos sea insensible
- 5. ¿Cómo hacer que NSTableView sea transparente?
- 6. Cómo hacer que PictureBox sea desplazable
- 7. ¿Cómo hacer que Unix sea binario autónomo?
- 8. Cómo hacer que TimePicker sea más pequeño
- 9. Cómo hacer que mi código sea rápido
- 10. ¿Cómo hacer que odeint sea exitoso?
- 11. ¿Cómo hacer que Rotate3dAnimation sea más suave?
- 12. Firebug: ¿Cómo hacer que la pestaña de redes sea persistente?
- 13. ¿Cómo hacer que la operación de escritura sea idempotente?
- 14. ¿Cómo hacer que la salida de GCC sea stdout?
- 15. ¿Cómo hacer que DateTime sea independiente de la cultura actual?
- 16. ¿Cómo hacer que la aplicación de iPhone sea "skinnable"?
- 17. ¿Cómo hacer que JFrame sea transparente?
- 18. ¿Cómo hacer que Tomcat sea portátil?
- 19. Especificando la carpeta c: \ ProgramData en el proyecto de instalación?
- 20. Eliminación de la marca del instalador NSIS
- 21. Cómo puedo hacer que el instalador se ejecute como administrador
- 22. ¿Cómo hacer que la identificación amigable no sea sensible?
- 23. ¿Cómo hacer que la plantilla del código Eclipse sea así?
- 24. Cómo hacer que la declaración if grande sea más legible
- 25. ¿Cómo hacer que la columna WPF Datagrid no sea enfocable?
- 26. Android Spinner: cómo hacer que la vista desplegable sea transparente?
- 27. ¿Cómo hacer que la deserialización XML sea más rápida?
- 28. cómo hacer que la etiqueta sea visible/invisible?
- 29. QSplitter: ¿Cómo hacer que la segunda columna sea más pequeña?
- 30. ¿Cómo hacer que la aplicación Java sea independiente?
'AccessControl :: GrantOnFile "$ AppData \ Folder \ * "" (S-1-5-32-545) La línea "FullAccess" 'no es necesaria ya que todas las carpetas y archivos dentro de la" Carpeta "tendrán pleno acceso con la primera línea. – nawfal