如何在WPF C#中静默安装外部NSIS exe

时间:2013-09-22 06:31:23

标签: c# .net wpf nsis silent-installer

就像标题所说,我正试图通过我用WPF C#编写的应用程序安装.exe 静默(例如,inkscape)。问题是,我使用的安装过程总是返回异常并失败。

以下是我使用的代码:

    public static bool StartInstall(string pathtofile)
    {
        try
        {
            Process process = new Process();
            process.StartInfo.FileName = "Temp.exe";
            process.StartInfo.Arguments = string.Format(" /S", pathtofile);
            process.Start();
            process.WaitForExit();
            Console.WriteLine("Silent Install was successful.");
            return true;
        }
        catch
        {
            MessageBox.Show("Error!");
            return false;
        }
    }

根据this网站,NSIS打包exes的静默安装开关是/ S.不过,我不确定我是否在语法上做错了。

我正在使用的代码来自this stackoverflow帖子。它适用于.msi包。也许它对NSIS exes不起作用?

我对它为什么不起作用相对无能为力。上面的代码将在“process.Start()”行崩溃,很可能是因为一个未知的命令或其他东西。

如果有人能说明如何为NSIS安装程序启动该过程,我会感激不尽。

1 个答案:

答案 0 :(得分:0)

我已经在csharpfolk的帮助下解决了这个问题。

我的问题是两个不同原因的组合:

首先,确实需要管理员权限才能运行该应用程序。

其次,“process.StartInfo.Filename”行需要文件的完整路径。一旦我将其更改为“C:\ Downloads \ Temp.exe”,它就能正常工作。