在 VS 安装程序项目中,Commit() 无法正常工作

In VS Installer Project, Commit() is not working properly

使用 Visual Studio 安装程序项目,我将初始安装项目包含在 InstallCommitCustom Actions 将执行下载 Windows\Temp\Target Folder 文件夹下的 cabinet 文件。因此,zip 文件将被解压缩。

我第一次使用 async/await 是在 DownloadCatalog() 中,但是即使创建了目录,zip 文件也没有正确下载。我假设安装过程停止了下载过程。然后我改了。

我创建了没有异步的安装文件。然后我运行它,结果还是一样。当 运行 在独立项目中时,这段代码工作正常。你有什么建议吗?


namespace IntialSetupApp
{
    [RunInstaller(true)]
    public partial class IntialInstallApp : System.Configuration.Install.Installer
    {
        private readonly string temp = @"C:\Windows\Temp\Target Folder\";
        private readonly string zipUrl = @"https://thank.you/so.much";
        private readonly string catalog = @"C:\Windows\Temp\Target Folder\whateverXML.xml";


        public IntialInstallApp()
        {
            InitializeComponent();
        }
        public override void Commit(IDictionary savedState)
        {
            base.Commit(savedState);
            Directory.CreateDirectory(temp);
            DownloadCatalog();
        }

        private Task DownloadCatalog()
        {
            try
            {
                string fileName = Path.Combine(temp, "ZippedCab.cab");
                Uri uri = new Uri(url);

                using (WebClient client = new WebClient())
                {
                    client.DownloadFile(uri, fileName);
                }
                UnzipFile(fileName);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            return Task.FromResult(true);
        }
        private Task UnzipFile(string filePath)
        {
            try
            {
                CabInfo cab = new CabInfo(filePath);
                cab.Unpack(temp);
                return Task.FromResult(true);
            }
            catch (Exception e)
            {

                Console.WriteLine(e.Message);
            }
            return Task.FromResult(false);
        }
    }
}

+更新 通过上面的代码,我独立创建了console工程,它创建了文件夹并完成了文件的下载。因此,似乎 installer 阻止修改其他文件夹。有什么解决方法吗?

原因是 The request was aborted: Could not create SSL/TLS secure channel.,所以我用 this 更新了代码。然后就正常了。