我正在制作一个 C# 安装程序,它首先检查终端。然而,当我使用
File.Exists()
时,它总是返回 false。
这个问题有解决办法吗?
代码(最小):
if (File.Exists(Directory.GetCurrentDirectory() + @"%LocalAppData%\Microsoft\WindowsApps\Microsoft.WindowsTerminal_8wekyb3d8bbwe\wt.exe"))
{
WriteAtPosition(0, 29, "you have terminal! (gg)");
}
else
{
WriteAtPosition(0, 29, "you no have terminal. (rip you)");
}
代码(完整):
Console.Write("\u001b[48;2;255;255;255m\u001b[38;2;40;155;204m");
Console.WriteLine(" ░▒▒▒▒▒▒▒▒▒███████▒▒▒██▒▒▒▒▒▒▒▒▒▒▒█████████████████████████████████████▒█▒▒▒███████████████████████████████████████");
Console.WriteLine(" ░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░▒▒▒▒█████████████████████████████████▒▒▒▒▒▒████████████████████████████████████████");
Console.WriteLine(" ░▒▒▒▒▒▒▒▒▒░▒▒▒░░░░░░░░░░░░░░░░▒▒░░░▒▒▒▒▒▒███████████████████████▒▒▒▒▒▒▒▒████████████████████████████████████████");
Console.WriteLine(" ░▒▒▒▒▒▒░░░░░```` ░░░░░░░░░░░░░░▒▒▒█████▒██████████████▒▒░░░░▒▒▒▒████████▒▒███████████████████████████");
Console.WriteLine(" ░░░░░░ ░░░░░░░░░ '░░▒▒▒█▒▒▒██████████████▒░░ ░░░░▒▒████▒▒▒▒▒▒▒▒▒▒▒████████████████████");
Console.WriteLine(" ` ░░░ ░░░░░ ░░░▒▒▒▒▒▒███████████▒▒░░░░ ░░░▒▒▒▒▒▒▒░░░▒▒▒▒▒█████████████████████");
Console.WriteLine(" ░░░''░░░░ ░░▒▒▒▒▒▒▒██████████▒▒▒▒▒░░░ ░░░░░░░▒▒▒▒▒▒░▒▒▒██████████████████████");
Console.WriteLine(" ░░░░░░▒▒▒▒████████▒▒▒▒░░` ░░░░░░░▒▒▒▒▒▒▒████████████████████████");
Console.WriteLine(" ```░░░▒▒██▒▒▒▒▒▒▒▒▒░░░ ░░░░░░░▒▒▒▒▒▒▒█████████████████████████");
Console.WriteLine("░░ ░░▒▒█▒▒░░░░░░░░ ░░░░░░░░░▒▒▒▒▒▒█████████████████████▒▒▒▒▒▒");
Console.WriteLine("░░░░░ ░░░ ░▒▒███▒▒▒░ ░░░░░░░░░░░░▒▒▒▒▒▒▒███████████████▒▒▒▒▒▒▒▒▒▒");
Console.WriteLine("░░░░░░ ░░▒▒▒░░░░ ░▒▒▒███▒▒░░ ░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒");
Console.WriteLine("░░░░░░░ ░░░▒▒▒▒▒▒▒▒▒░░ .░▒▒▒██████▒░░ ░░░░░░░░░░░░░▒░░▒▒▒░▒▒▒▒████████▒▒▒▒▒░░░░▒▒▒▒");
Console.WriteLine(" '░░░░░ ░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒███████████@▒▒▒░░░░░▒▒▒▒▒▒░░░▒▒▒▒▒▒▒▒▒▒▒▒▒█████████▒▒▒▒░░░░░░▒▒▒");
Console.WriteLine(" ░░░░░░ '░▒▒▒▒▒███████████████████████▒▒▒░░▒▒▒▒▒░░░░▒▒▒▒▒▒▒▒▒▒▒▒█████████▒▒▒▒▒░░░░░░▒▒▒");
Console.WriteLine("░ ░░░░░░ ░░' ░▒▒▒▒▒▒██████████████████████▒▒▒░▒▒▒▒▒░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒██████▒▒▒▒▒▒░░░▒▒▒▒▒▒▒");
Console.WriteLine("░░ ░░░░░░░░ ░▒▒▒▒▒▒█████████████████████▒▒▒▒▒▒██▒▒▒▒▒▒██████▒▒▒▒▒▒████████▒▒▒▒▒▒▒▒▒▒▒▒▒▒");
Console.WriteLine("░░░ ░░░░░░░░ ░░▒▒▒▒▒▒▒██████████████████████████████████████▒████████████████████████▒▒");
Console.WriteLine("░░░ ░░░░░░░ '░░▒░░▒▒█████████████████████████████████████████████████████████████▒▒");
Console.WriteLine("░░░ ░░░░░░░▒██████████████████████████████████████████████████████████▒▒▒▒");
Console.WriteLine("░ ░░░ ░░░░▒▒▒▒██▒█████████████████████████████████████████████████▒▒▒▒▒▒▒");
Console.WriteLine("░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░ ░░░░░▒▒████▒▒▒▒▒▒███████████████████████████████████████████▒▒▒▒▒▒▒");
Console.WriteLine("░░░ ░░░ ░░░░░░░░░░░▒▒▒▒░░░░░░░░▒▒▒░░░░░░░░░░ ░ ░ ░░░░▒▒▒▒░░░░░░░░░░░░░▒▒▒▒▒████████████████████████████████▒▒▒▒▒▒");
Console.WriteLine("░░ ░░░░░░░░░░░░▒▒▒▒▒▒▒▒░░░░░░░▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒███████████████████████████████████");
Console.WriteLine("░ ░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒░░░░░░░▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒██████████████████████████████▒▒▒");
Console.WriteLine("░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░▒░░░░░░░▒▒░░░░░░░▒▒▒▒██▒▒▒▒▒███████████████████████████");
Console.WriteLine("░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒░░░░░░▒▒▒▒░▒▒▒▒▒▒▒▒░░░░▒▒▒▒▒█████████████████████████████████");
Console.Write("\u001b[48;2;0;0;0m\u001b[38;2;255;255;255m");
// WriteAtPosition(0, 28, "████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████");
WriteAtPosition(0, 28, "██");
WriteAtPosition(0, 29, "Checking for Terminal...");
if (File.Exists(Directory.GetCurrentDirectory() + @"%LocalAppData%\Microsoft\WindowsApps\Microsoft.WindowsTerminal_8wekyb3d8bbwe\wt.exe"))
{
WriteAtPosition(0, 29, "you have terminal! (gg)");
}
else
{
WriteAtPosition(0, 29, "you no have terminal. (rip you)");
}
Thread.Sleep(10000);
static void WriteAtPosition(int left, int top, string text)
{
Console.CursorLeft = left;
Console.CursorTop = top;
Console.WriteLine(text);
}
这是因为该文件不存在,至少在您指定的路径中不存在。
Directory.GetCurrentDirectory()
返回当前目录的绝对路径,因此将 @"%LocalAppData%\Microsoft\WindowsApps\Microsoft.WindowsTerminal_8wekyb3d8bbwe\wt.exe"
附加到该路径没有意义。
您只想测试该文件是否存在于您的 LocalAppData 路径中。但是,如果您尝试使用该路径,则
File.Exists
不起作用(它不理解 %LocalAppData%
通配符),因此您必须首先使用 %LocalAppData%
获取 Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
的位置,然后连接路径的其余部分你正在寻找这样的
File.Exists(@$"{Environment.GetFolderPath( Environment.SpecialFolder.LocalApplicationData)}\Microsoft\WindowsApps\Microsoft.WindowsTerminal_8wekyb3d8bbwe\wt.exe")
或更好
Path.Combine(Environment.GetFolderPath(
Environment.SpecialFolder.ApplicationData), @"\Microsoft\WindowsApps\Microsoft.WindowsTerminal_8wekyb3d8bbwe\wt.exe");