Ver Mensaje Individual
  #2  
Antiguo 22-02-2024
JosepMLlort JosepMLlort is offline
Miembro
 
Registrado: abr 2012
Posts: 14
Reputación: 0
JosepMLlort Va por buen camino
Smile Mi solución

Hola.

He descubierto una solución. La comparto por si es útil a alguien más.

Microsoft Store no guarda los programas en ProgramFiles, sino en el directorio WindowsApps. Este directorio es de los más protegidos del sistema; es muy difícil escribir o modificar nada en él, y no es conveniente. Los datos, ficheros temporales, etc deben guardarse en un directorio específico de ProgramData, el cual es fácilmente accesible.

No he encontrado la manera de que el Deployment Manager de Delphi copie ficheros en ProgramData, pero he encontrado esta alternativa:
1. Con el Deployment Manager, instalo el fichero mdb (y cualquier otro fichero que deba escribirse durante la ejecución del programa) en el directorio del programa.
2. En el FormCreate de la primera ventana que se abre en el programa, leo el directorio del programa con ExtractFilePath(ParamStr(0)). Ojo: GetDir no funciona aquí.
3. Compruebo si existe el directorio c:\ProgramData\MiAplicacion (DirectoryExists). Si no existe, lo creo con ForceDirectories(c:\ProgramData\MiAplicacion)
4. Copio en este directorio (con CopyFile) el fichero mdb y los demás que deban escribirse durante la ejecución.
5. Leo y escribo estos ficheros en el directorio que he creado en ProgramData. Me olvido del original que está en el directorio del programa.

Y ya he conseguido que el programa funcione. Lo han aceptado y publicado en Microsoft Store!
Responder Con Cita