【发布时间】:2013-12-08 06:03:31
【问题描述】:
我尝试制作的自动更新软件存在问题。该应用程序作为服务器应用程序运行,并通过 FTP 检查更新并在有更新版本可用时下载它们。然后这会在程序根目录中解压缩一个名为 update 的文件夹。然后它会启动一个名为 update.bat 的文件,该文件会执行我可能需要为该更新执行的任何文件复制等操作。完成后,update.bat 将启动新的服务器应用程序。一旦程序再次检查更新,假设删除服务器应用程序根目录中的更新目录以及从更新服务器下载的 update.rar 文件。除了正在使用文件夹并且不会删除之外,所有这些都可以正常工作。我已经阅读了有关释放句柄和更改当前目录等的各种内容。但似乎无法使其正常工作。我会很感激有人在这里帮助我。这是此更新的代码。
private void Form1_Load(object sender, EventArgs e)
{
foreach (string s in Directory.GetDirectories("C:/my update dir"))
{
if (s.Contains("Instance"))
{
var _instance = Regex.Match(s, @"\d+");
Process p = new Process();
ProcessStartInfo pinfo = new ProcessStartInfo();
pinfo.FileName = "cmd.exe";
pinfo.WorkingDirectory = "C:/mySQL/bin";
pinfo.Arguments = "/C mysql.exe -u** -p** dbnameHere" + _instance.ToString() +
" < \"C:/my update dir/update/update.sql\"";
p.StartInfo = pinfo;
p.Start();
p.WaitForExit();
p.Close();
p.Dispose();
Directory.SetCurrentDirectory("C:/");
}
}
Directory.SetCurrentDirectory("C:/");
this.Dispose();
Application.Exit();
}
【问题讨论】: