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!
|