Развертывание CefSharp Winform через ClickOnce и требования vc redist в Visual Studio 2019 - ошибка - PullRequest
0 голосов
/ 27 октября 2019

При запуске установки clickonce приложения CefSharp Winform возвращает ошибку при установке Redist vc ++ 2019 (vc ++ соответствует требованиям к развертыванию). Во время установки создается пустой каталог.

"C: \ Users \ xxxxxx \ AppData \ Local \ Temp \ VSD66FC.tmp \ vcredist_x86 \ vcredist_x86.exe изменился с момента первоначальной публикации."

В Windows 7 и 10 одинаковая ошибка. Мне нужно установить пакет вручную.

Я удалил Visual C ++ «14» из требований, но я не знаю, как включить библиотеку c ++ в код приложения.

1 Ответ

0 голосов
/ 31 октября 2019

Я нашел обходной путь. Я использую сервис, но он должен работать в winform:

 private void InstallVCredist()
    {
        string exe = @"path to exe\VC_redist.x86.exe"; //set path
        string stp = @"\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; //set subkey
        using (RegistryKey reg = Registry.LocalMachine.OpenSubKey(stp)) //recall registry
        {
            if (reg != null)
            {
                foreach (string dname in reg.GetSubKeyNames()) //loop search
                {
                    using (RegistryKey sreg = reg.OpenSubKey(dname))
                    {
                        if (sreg.GetValue("DisplayName").ToString() == "Microsoft Visual C++ 2015-2019 Redistributable (x86) - 14.23.27820") //set dispayname of version
                        {
                            vcredist = "1"; //it's mine control variable
                            break;
                        }
                    }
                }
            }
        }
        if (vcredist == "0") //now testing if it was found 
        {
            Process vc = new Process();
            vc.StartInfo.FileName = exe;
            //silent install
            vc.StartInfo.Arguments = "/install /passive /norestart";
            vc.StartInfo.UseShellExecute = false;
            vc.StartInfo.CreateNoWindow = true;
            //silent install
            vc.Start(); 
            vc.WaitForExit(); //as he says ;)
        }
    }
...