freeswitch/w32/Setup/CustomActions/Setup.CA.DownloadOpenH264/CustomAction.cs

71 lines
2.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Deployment.WindowsInstaller;
using ICSharpCode.SharpZipLib.BZip2;
using System.IO;
using System.Net;
namespace Setup.CA.DownloadOpenH264
{
public class CustomActions
{
[CustomAction]
public static ActionResult DownloadOpenH264(Session session)
{
session.Log("Begin DownloadOpenH264");
string filename = session.CustomActionData["location"] + @"openh264.dll";
try
{
WebRequest request = HttpWebRequest.Create("http://ciscobinary.openh264.org/openh264-1.8.0-win64.dll.bz2");
using (WebResponse response = request.GetResponse())
{
Stream responseStream = response.GetResponseStream();
BZip2InputStream zisUncompressed = new BZip2InputStream(responseStream);
using (var output = File.Create(filename))
{
var buffer = new byte[2048];
int n;
while ((n = zisUncompressed.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, n);
}
}
}
}
catch {
session.Log("Unable to download openh264 codec.");
}
return ActionResult.Success;
}
[CustomAction]
public static ActionResult RemoveOpenH264Binary(Session session)
{
session.Log("Begin RemoveOpenH264Binary");
string filename = session.CustomActionData["location"] + @"openh264.dll";
try
{
// Check if file exists with its full path
if (File.Exists(filename))
{
// If file found, delete it
File.Delete(filename);
session.Log("RemoveOpenH264Binary deleted openh264.dll");
}
}
catch (IOException ioExp)
{
session.Log("RemoveOpenH264Binary can't delete openh264.dll");
}
return ActionResult.Success;
}
}
}