我在C#中有一個ClickOnce應用程序,我想在自動卸載過程中卸載所有文件。如何在卸載ClickOnce應用程序時刪除所有數據?
以前我用下面的返回我的應用程序數據路徑:
static public string APPLICATION_DATA_PATH
{
get
{
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData).ToString(), "myFolder\\");
}
}
這將返回c://Users/UserName/AppData/MyFolder
其作品,但與ClickOnce應用程序的自動卸載,此文件夾不會被刪除。
現在,我測試用:
static public string APPLICATION_DATA_PATH
{
get
{
if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
// If Clickonce Application is deployed.
return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.DataDirectory
}
else
{
// If I'm in debug mode (with visual studio)
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData).ToString(), "myFolder\\");
}
}
}
這與Visual Studio調試,但工作的時候我發表我的申請,我安裝的任何計算機上,我的應用程序崩潰和Windows報告(WER)只是說: 「應用程序崩潰」。
我有不知道爲什麼我這個不一樣,如果我的APPLICATION_DATA_PATH是正確的工作...
你有沒有用於調試使用System.Deployment.Application.ApplicationDeployment.CurrentDeployment.DataDirectory
路徑ClickOnce應用程序的任何想法?或者使用ClickOnce卸載程序刪除所有文件的想法?
編輯
我到達調試我的ClickOnce應用程序(用於幫助THX @JRoughan), 現在,我看到我的 「APPLICATION_PATH」 返回空,我已經改變我的代碼:
static public string APPLICATION_DATA_PATH
{
get
{
string path = null;
if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
path = System.Deployment.Application.ApplicationDeployment.CurrentDeployment.DataDirectory;
}
return path;
}
}
如果null是回報,代碼不approuved的「System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed」,但爲什麼呢?我已經安裝了一個新的clickonce應用程序......並且部署了應用程序,代碼應該返回「CurrentDeployment.DataDirectory」!不是?
最後編輯
最後,路徑正常工作。 在我的應用程序的開始,我在這裏重新開始,如果應用程序沒有管理員的規則,但是,當ClickOnce應用程序具有管理員規則,路徑不工作... 感謝您的幫助!
我認爲尾隨的反斜槓可能與它有關。 – 2013-02-27 09:07:15
@JRoughan建議編輯時,請嘗試立即修復該帖子的所有問題,以便您不必在同一帖子上提出兩個修改。 – Spontifixus 2013-02-27 09:18:33
@Spontifixus我再次編輯它,因爲它仍然很難看。你爲什麼不鼓勵改進?你覺得我正在試圖讓這個系統獲得2分嗎? – JRoughan 2013-02-27 09:28:44