我在尝试使用WindowsInstaller库或Wix microsoft . deploy .WindowsInstaller.
我,得到例外,文件正在使用的进程,我不能删除它,即使我已经关闭了所有的记录,视图和数据库,并处置它们。
try
{
string currentDir = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;
string msiPath = "PathToMyMSI.msi";
using (InstallPackage installPackage = new InstallPackage(msiPath, DatabaseOpenMode.ReadOnly))
{
string query = "SELECT * FROM Property WHERE Property = 'ProductVersion'";
using (View view = installPackage.OpenView(query))
{
view.Execute();
using (Record record = view.Fetch())
{
string version = record.GetString(2);
Console.WriteLine(version);
record.Close();
}
view.Close();
}
installPackage.Close();
}
File.Delete(msiPath);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
仍然得到以下内容:
访问路径'PathToMyMSI。Msi被拒绝了。
我也尝试过对象
数据库
我能够弄清楚是什么阻止了删除操作。
看起来文件位于只读中。我不知道为什么会出现这种异常,但是下面的方法解决了它:
//removing read only from file in order to interact with it
FileInfo fileInfo = new FileInfo(msiPath);
if (fileInfo.IsReadOnly)
{
fileInfo.IsReadOnly = false;
}
希望它能帮助别人。
感谢每一个花时间帮助我的人。
您可以遵循以下步骤来解决您的问题:
- 等待一分钟并再次尝试删除文件,有时Windows或使用该文件的程序可能仍在关闭,因此仍在使用您试图删除的文件。 关闭资源管理器窗口并重新打开。
- 找到使用该文件的程序并关闭它。如果你不确定是什么程序在使用这个文件,关闭所有的程序,直到你能够删除这个文件。
- 尝试使用unlocker,这是一个免费的软件程序,旨在解锁Windows或其他程序正在使用的任何文件,而无需重新启动计算机。
- 重启计算机。如果在关闭所有程序后,您仍然无法删除该文件,很可能是后台的某些东西仍在使用该文件。
- 如果重新启动计算机后,您仍然无法删除该文件,请将计算机启动到安全模式并删除该文件。
谢谢