У меня есть программа C ++, которая подключается к базе данных Access через соединение системы DSN OBDC. Этот DSN — это путь к MDB в папке ProgramData. Когда пользователь A запускает приложение, он копирует этот файл MDB в свою папку AppData \ Local и любые обновления в MDB, которые делает приложение, он делает в тот же файл в своей папке AppData. Это не хорошо, потому что если пользователь B запускает приложение, я хочу, чтобы они увидели изменения, которые пользователь A внес в MDB.
1) Есть ли способ заставить его НЕ копировать MDB в свою папку AppData, а вместо этого просто использовать тот, который находится в ProgramData?
2) Я делаю это правильно? Должен ли я поместить MDB в другое место, отличное от ProgramData, где оно будет правильно предоставлено?
3) Нужно ли, чтобы мое приложение при запуске сравнивало временные метки для MDB? При запуске я мог получить его из ProgramData, а когда он закроется, я мог бы записать его обратно в ProgramData? Это похоже на взлом, и я даже не знаю, будут ли проблемы с разрешениями
Использовать (подпапку) общей папки, %Public%
который направляет к C: \ Users \ Public.
Этот пост имеет отношение к комментарию ОП и предыдущему ответу Густава:
Используйте (подпапку) общей папки% Public%, которая указывает на C: \ Users \ Public.
Я не эксперт по установке Inno, но я не думаю, что существует предопределенная константа для «C: \ Users \ Public». Но если вам нужна только константа, вы всегда можете это сделать.
Создать константу, используя #define макрос в самом верху вашего скрипта, такой как этот.
#define sf "C:\Users\Public"
И вы можете использовать его в своем сценарии, где вы хотите. Пример:
[Files]
Source: "app.exe"; DestDir: "{#sf}\MyApp\";