为什么此“ If-Else if- else”语句不适用于process.start?

时间:2018-07-26 15:58:37

标签: c# if-statement

我正在努力查看为什么此if-Else if-Else语句不起作用。

string JPRO_8_5_0 = @"C:\ProgramData\Package Cache\{0809190b-37e7-4852-9f0c-e183636739ba}\JproSetup.exe";
string JPRO_8_4_0 = @"C:\ProgramData\Package Cache\{270ce95e-5e84-4b6a-8d58-f8905b0a3cfc}\JproSetup.exe";


if (JPRO_8_5_0 != null)
{
    Process a = new Process();
    a.StartInfo.FileName = JPRO_8_5_0;
    a.StartInfo.Arguments = "/uninstall /quiet";
    a.Start();
}
else if (JPRO_8_4_0 != null)
{
    Process b = new Process();
    b.StartInfo.FileName = JPRO_8_4_0;
    b.StartInfo.Arguments = "/uninstall /quiet";
    b.Start();
}
else
{

}

所以基本上我需要做的是让程序检查字符串中列出的文件,如果有,请运行无提示安装程序。

我知道如果我安装了该文件,第一个静默安装程序将通过。但是,我需要它来检查多个版本,因为我们需要随时删除大约20个不同的版本。

当检查时,如果JPRO_8_5_0不存在,它将惊慌并说找不到该项目(是的,没有)。我希望它跳过所有未找到的版本,然后转到下一个版本进行检查。

关于为什么这对我不起作用的任何建议?

3 个答案:

答案 0 :(得分:7)

您的“ if / else”不检查文件是否存在,它仅检查字符串是否不为空(根据您的代码,该字符串永远不为空)。

您需要修改代码以检查文件是否存在。参见File.Exists(path)

答案 1 :(得分:1)

希望对您有帮助。

    using System.IO;

string JPRO_8_5_0 = @"C:\ProgramData\Package Cache\{0809190b-37e7-4852-9f0c-e183636739ba}\JproSetup.exe";
string JPRO_8_4_0 = @"C:\ProgramData\Package Cache\{270ce95e-5e84-4b6a-8d58-f8905b0a3cfc}\JproSetup.exe";

try {

if (File.Exists(JPRO_8_5_0))
{
    Process a = new Process();
    a.StartInfo.FileName = JPRO_8_5_0;
    a.StartInfo.Arguments = "/uninstall /quiet";
    a.Start();
    MessageBox.Show("JPRO_8_5_0 Exists.");
}
if (File.Exists(JPRO_8_4_0))
{
    Process b = new Process();
    b.StartInfo.FileName = JPRO_8_4_0;
    b.StartInfo.Arguments = "/uninstall /quiet";
    b.Start();
    MessageBox.Show("JPRO_8_4_0 Exists.");
}
else
{
    MessageBox.Show("File Does Not Exists.");
}

}
catch { }

答案 2 :(得分:-2)

您不需要其他部分。

> GBYOR-DT1 
> GBYOR-DT2 
> GBYOR-DT3 
> GBYOR-DT4 
> GBYOR-DT6

> 
> ...GBYOR-DT5 does not exist so this is the next number to use for renaming.