Как без вывода сообщений установить внешний NSIS exe в WPF C #

Как говорится в названии, я пытаюсь установить .exe в автоматическом режиме (скажем, например, inkscape) через мое приложение, написанное на WPF C #. Проблема в том, что процесс установки, который я использую, всегда возвращает исключение и не работает.

Вот код, который я использую:

    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;
        }
    }

Согласно на этом веб-сайте, переключателем для автоматической установки для упакованных exes NSIS является / S. Я не уверен, что я делаю что-то не так с синтаксисом.

Код, который я использую, взят из этого сообщения stackoverflow. Это работает для пакета .msi. Может, у бывших NSIS не работает?

Я относительно не понимаю, почему это не работает. В приведенном выше коде произойдет сбой в строке "process.Start ()", скорее всего, из-за неизвестной команды или чего-то еще.

Я был бы благодарен, если бы кто-нибудь мог пролить свет на то, как запустить этот процесс для установщика NSIS.


person zaedas99    schedule 22.09.2013    source источник
comment
Некоторым установщикам требуются права администратора, возможно, вам следует запустить установщик с UseShellExecute = true и Verb="runas". Проверьте эту ветку.   -  person csharpfolk    schedule 22.09.2013
comment
Вы действительно были правы в части прав администратора! Спасибо   -  person zaedas99    schedule 22.09.2013


Ответы (1)


Решил проблему с помощью csharpfolk.

Моя проблема заключалась в сочетании двух разных причин:

Во-первых, для запуска приложения действительно требовались права администратора.

Во-вторых, для строки process.StartInfo.Filename требуется полный путь к файлу. Как только я изменил его на «C: \ Downloads \ Temp.exe», все заработало.

person zaedas99    schedule 22.09.2013