|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.ComponentModel;
|
|
|
using System.Data;
|
|
|
using System.Drawing;
|
|
|
using System.Text;
|
|
|
using System.Windows.Forms;
|
|
|
using System.IO;
|
|
|
using MovieTube.Installer.Properties;
|
|
|
using System.Diagnostics;
|
|
|
|
|
|
namespace MovieTube.Installer
|
|
|
{
|
|
|
public partial class MainForm : Form
|
|
|
{
|
|
|
private const string CodecName = "K-Lite_Codec_Pack_1060_Basic.exe";
|
|
|
private const string CodecININame = "klcp_basic_unattended.ini";
|
|
|
private const string MovieTubeSetupName = "MovieTube.Setup.msi";
|
|
|
private const string InstallFolderName = "MovieTube";
|
|
|
private const string AppName = "MovieTube.exe";
|
|
|
|
|
|
public MainForm()
|
|
|
{
|
|
|
InitializeComponent();
|
|
|
}
|
|
|
|
|
|
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
|
|
|
{
|
|
|
if(e.CloseReason == CloseReason.UserClosing)
|
|
|
e.Cancel = true;
|
|
|
}
|
|
|
|
|
|
private void Install()
|
|
|
{
|
|
|
|
|
|
DisplayMessage("Decompressing K-Lite Codec Pack for playback");
|
|
|
Decompress(CodecName, Resources.K_Lite_Codec_Pack_1060_Basic);
|
|
|
Decompress(CodecININame, Resources.klcp_basic_unattended);
|
|
|
DisplayMessage("Installing K-Lite Codec Pack for playback");
|
|
|
LaunchApp(CodecName, String.Format(" /verysilent /norestart /LoadInf=\".\\{0}\" ", CodecININame));
|
|
|
DisplayMessage("Decompressing MovieTube setup");
|
|
|
Decompress(MovieTubeSetupName, Resources.MovieTube_Setup);
|
|
|
Decompress("setup.exe", Resources.setup);
|
|
|
DisplayMessage("Installing MovieTube setup");
|
|
|
|
|
|
|
|
|
LaunchApp("setup.exe", String.Empty);
|
|
|
|
|
|
var appPath = Path.Combine(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), InstallFolderName), AppName);
|
|
|
var dbPath = Path.Combine(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), InstallFolderName), "movie.db");
|
|
|
|
|
|
if (File.Exists(dbPath))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
File.Delete(dbPath);
|
|
|
}
|
|
|
catch { }
|
|
|
}
|
|
|
|
|
|
|
|
|
if (File.Exists(appPath))
|
|
|
{
|
|
|
LaunchApp(appPath, String.Empty, false);
|
|
|
}
|
|
|
|
|
|
Application.Exit();
|
|
|
}
|
|
|
|
|
|
private void LaunchApp(string name, string args, bool wait = true)
|
|
|
{
|
|
|
var startInfo = new ProcessStartInfo(name, args);
|
|
|
startInfo.Verb = "runas";
|
|
|
var dir = Path.GetDirectoryName(name);
|
|
|
if (!String.IsNullOrEmpty(dir))
|
|
|
startInfo.WorkingDirectory = dir;
|
|
|
|
|
|
var process = Process.Start(startInfo);
|
|
|
if(wait)
|
|
|
process.WaitForExit();
|
|
|
}
|
|
|
|
|
|
private void Decompress(string name, byte[] data)
|
|
|
{
|
|
|
var path = Path.Combine(Application.StartupPath, name);
|
|
|
if (File.Exists(path))
|
|
|
File.Delete(path);
|
|
|
File.WriteAllBytes(path, data);
|
|
|
|
|
|
}
|
|
|
private void Decompress(string name, string data)
|
|
|
{
|
|
|
var path = Path.Combine(Application.StartupPath, name);
|
|
|
if (File.Exists(path))
|
|
|
File.Delete(path);
|
|
|
File.WriteAllText(path, data);
|
|
|
}
|
|
|
|
|
|
private void DisplayMessage(string text)
|
|
|
{
|
|
|
this.labelMessage.Text = text + "...";
|
|
|
Application.DoEvents();
|
|
|
}
|
|
|
|
|
|
private void MainForm_Load(object sender, EventArgs e)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
private void timer_Tick(object sender, EventArgs e)
|
|
|
{
|
|
|
this.timer.Stop();
|
|
|
this.timer.Dispose();
|
|
|
Install();
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
|