在 VS 安装程序项目中,Commit() 无法正常工作
In VS Installer Project, Commit() is not working properly
使用 Visual Studio 安装程序项目,我将初始安装项目包含在 Install 和 Commit 中 Custom 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 更新了代码。然后就正常了。
使用 Visual Studio 安装程序项目,我将初始安装项目包含在 Install 和 Commit 中 Custom 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 更新了代码。然后就正常了。