2017-04-09 61 views
-1

我有一個C++程序,它通過OBDC系統DSN連接連接到Access數據庫。該DSN是ProgramData文件夾中MDB的路徑。當用戶A運行該應用程序時,它將該MDB文件複製到他們的AppData \ Local文件夾以及該應用程序對該MDB的任何更新,它對AppData文件夾中的一個進行更新。這是不好的,因爲如果用戶B運行應用程序,我希望他們看到用戶A對MDB所做的更改。ProgramData中的C++應用程序MDB拷貝到用戶的AppData文件夾,當我不希望它

1)有沒有辦法強制它不將MDB複製到他們的AppData文件夾,而只是使用ProgramData中的那個?

2)我是否正確地做到了這一點?我是否應該將MDB放在與ProgramData不同的位置,以便它能夠正確共享?

3)我是否需要啓動我的應用程序才能比較MDB的時間戳?在啓動時,我可以從ProgramData中獲取它,當它關閉時,我可以將它寫回到ProgramData中?這似乎是一個黑客,我甚至不知道如果權限將是一個問題

+0

我們如何知道1)的答案?這是你的應用程序。或者不是嗎?你能修改它嗎? –

+0

應用程序不是什麼複製它。它通過系統DSN擊中MDB,並且系統DSN指向ProgramData位置。我的應用程序中沒有任何內容引用用戶的AppData文件夾...我認爲這是ODBC在後端執行的操作是在那裏複製 – jrhoads23

回答

0

使用(的子文件夾),其引導到C中的共享文件夾,%Public%:\用戶\公用

+0

非常感謝!你知道是否有Inno Setup常數?我沒有在他們的文檔中看到一個 – jrhoads23

+0

對不起,我對Inno Setup很少了解。但是我已經爲一些專家添加了標籤來捕捉它。 – Gustav

+0

我應該直接在C:\ Users \ Public下創建我的MDB文件夾嗎?我問的原因是我在Inno Setup安裝程序中對該路徑進行了硬編碼,當它運行時,它會將我的文件夾安裝在C:\ Users \ Public \ Public Documents下。那是它需要去的地方嗎?或者我應該把重點放在C:\ Users \ Public下? – jrhoads23

0

這是一篇有關OP的評論和以前的答案由Gustav:

使用(的子文件夾)共享文件夾,%公衆%,其中定向到C:\用戶\公用。

我不是Inno設置專家,但我不認爲「C:\ Users \ Public」的預定義常量存在。但如果它只有一個你想要的東西,你總是可以做到這一點。

使用創建一個常量#define宏在腳本的最頂端,如this。

#define sf "C:\Users\Public" 

而且你可以在你想要的腳本中使用它。例如:

[Files] 
Source: "app.exe"; DestDir: "{#sf}\MyApp\"; 
+0

是的,我同意我不相信它有一個常數。看到我的問題在下面... Inno安裝程序沒有把它放在C:\ Users \ Public下面...它放在C:\ Users \ Public \ Public Documents – jrhoads23

+0

@ jrhoads23如果你想採取這種方法,你應該最好問一個更具體的問題,如*「在Inno Setup中解析C:\ Users \ Public」*。 –

+0

會做。非常感謝大家! – jrhoads23

相關問題