我在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