如何解决拒绝访问 AppDomain.CurrentDomain.BaseDirectory
我创建了一个具有更新系统的应用程序,这是非常规的:
此应用程序从以下位置安装和运行:
C:\Program Files (x86)\Application test
searchdata.exe
但在某个时候,我想出了一个好主意,即通过以下步骤制作一个更新系统:
- 点击更新按钮:检查
update.exe
可执行文件是否存在。
- 这是下载和进度条脚本:
private void backgroundWorker1_DoWork(object sender,DoWorkEventArgs e)
{
DownloadFileWithProgress("http://test.pro/installer/update.dat",AppDomain.CurrentDomain.BaseDirectory + "update.exe",ProgressBar1,Label4);
}
private void DownloadFileWithProgress(string DownloadLink,string TargetPath,ProgressBar Progress,Label LabelProgress)
{
int bytesProcessed = 0;
Stream remoteStream = null;
Stream localStream = null;
HttpWebResponse response = null;
try
{
WebRequest request = WebRequest.Create(DownloadLink);
double TotalBytesToReceive = 0;
var SizewebRequest = WebRequest.Create(new Uri(DownloadLink));
SizewebRequest.Method = "HEAD";
using (var WebResponse = SizewebRequest.GetResponse())
{
var fileSize = WebResponse.Headers.Get("Content-Length");
TotalBytesToReceive = Convert.Todouble(fileSize);
}
response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
remoteStream = response.GetResponseStream();
string filePath = TargetPath;
localStream = File.Create(filePath);
byte[] buffer = new byte[1024];
int bytesRead = 0;
do
{
bytesRead = remoteStream.Read(buffer,buffer.Length);
localStream.Write(buffer,bytesRead);
bytesProcessed += bytesRead;
double bytesIn = double.Parse(bytesProcessed.ToString());
double percentage = bytesIn / TotalBytesToReceive * 100;
percentage = Math.Round(percentage,0);
if (Progress.Invokerequired)
{
Progress.Invoke(new MethodInvoker(() =>
{
Progress.Value = int.Parse(Math.Truncate(percentage).ToString());
}));
}
else
{
Progress.Value = int.Parse(Math.Truncate(percentage).ToString());
}
if (LabelProgress.Invokerequired)
{
LabelProgress.Invoke(new MethodInvoker(() =>
{
LabelProgress.Text = int.Parse(Math.Truncate(percentage).ToString()) + "%";
}));
}
else
{
LabelProgress.Text = int.Parse(Math.Truncate(percentage).ToString()).ToString() + "%";
}
}
while (bytesRead > 0);
}
else
{
throw new ArgumentException(response.StatusDescription,"Respuesta del Servidor");
}
}
catch (Exception ex)
{
MessageBox.Show("Error en DownloadFileWithProgress" + ex.Message);
}
finally
{
if (response != null)
response.Close();
if (remoteStream != null)
remoteStream.Close();
if (localStream != null)
localStream.Close();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。