コード例 #1
0
ファイル: Form1.cs プロジェクト: Wessie/Loopstream
        void t_Tick(object sender, EventArgs e)
        {
            ((Timer)sender).Stop();
            this.Text += " v" + Application.ProductVersion;

            DFC.coreTest();
            if (Directory.Exists(@"..\..\tools\"))
            {
                if (DialogResult.Yes == MessageBox.Show(
                        "make .dfc (decent file container) ?\r\n\r\nhint: rename the tools folder\r\n         if you don't wanna see this",
                        "new embedded archive",
                        MessageBoxButtons.YesNo,
                        MessageBoxIcon.Question))
                {
                    splash.vis();
                    new DFC().make(splash.pb);
                    Program.kill();
                }
            }
            if (!Program.DO_IT)
            {
                MessageBox.Show("This program should be run by Loopstream!\n\nStop doing that.");
                Program.kill();
            }
            if (!Directory.Exists(Program.tools))
            {
                //MessageBox.Show(Program.tools);
                MessageBox.Show("Could not find LoopstreamTools directory.\n\nWhat the f**k.");
                Program.kill();
            }
            System.Diagnostics.Process[] procs = System.Diagnostics.Process.GetProcessesByName("traktor2loopstream");
            if (procs.Length > 0)
            {
                Program.kill();
            }

            if (!Directory.Exists(Program.tools + "ice"))
            {
                splash.vis();
                new DFC().extract(splash.pb);

                DialogResult dr = MessageBox.Show(
                    "Would you like me to perform the necessary\n" +
                    "changes to the Traktor configuration files?",
                    "Automatic Install Prompt",
                    MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);

                if (dr == System.Windows.Forms.DialogResult.Yes)
                {
                    string path = System.Environment.GetEnvironmentVariable("USERPROFILE") + "\\";
                    string try1 = path + "Documents\\Native Instruments";
                    string try2 = path + "Native Instruments";
                    //MessageBox.Show(path);
                    if (Directory.Exists(try1))
                    {
                        path = try1;
                    }
                    else if (Directory.Exists(try2))
                    {
                        path = try2;
                    }
                    else
                    {
                        MessageBox.Show("Could not find the location of Traktor on your system.");
                        Program.kill();
                    }
                    bool messaged = false;
                    foreach (string str in Directory.GetDirectories(path))
                    {
                        string fpath = str + "\\Traktor Settings.tsi";
                        if (!File.Exists(fpath))
                        {
                            continue;
                        }
                        if (!messaged)
                        {
                            MessageBox.Show("About to modify the following config file:\n\n" + fpath + "\n\nPlease make sure that Traktor is completely\nshut down before proceeding.");
                        }
                        var      enc  = new System.Text.UTF8Encoding(false);
                        string[] data = System.IO.File.ReadAllText(fpath, enc).Split('\n');

                        int matches = 0;
                        for (int a = 0; a < data.Length; a++)
                        {
                            string s = data[a] + 's';
                            if (s.StartsWith("<Entry Name=\"Broadcast.IcecastServer.Address\""))
                            {
                                s = setvalue(data[a], "127.0.0.1");
                            }
                            if (s.StartsWith("<Entry Name=\"Broadcast.IcecastServer.MountPath\""))
                            {
                                s = setvalue(data[a], "/why.ogg");
                            }
                            if (s.StartsWith("<Entry Name=\"Broadcast.IcecastServer.Password\""))
                            {
                                s = setvalue(data[a], "loopstream");
                            }
                            if (s.StartsWith("<Entry Name=\"Broadcast.IcecastServer.Port\""))
                            {
                                s = setvalue(data[a], "42069");
                            }
                            if (s != data[a] + 's')
                            {
                                matches++;
                                data[a] = s;
                            }
                        }
                        if (matches == 4)
                        {
                            StringBuilder sb = new StringBuilder();
                            foreach (string ss in data)
                            {
                                sb.Append(ss);
                                sb.Append('\n');
                            }
                            System.IO.File.WriteAllText(fpath, sb.ToString(), enc);
                        }
                        else
                        {
                            MessageBox.Show("Failed to configure Traktor:\n\nUnable to parse config file");
                            Program.kill();
                        }
                    }
                    MessageBox.Show("Traktor configuration successful.");
                }
            }
            splash.unvis();
            splash.fx = false;
            splash.gtfo();

            System.Diagnostics.Process proc;
            proc           = new System.Diagnostics.Process();
            proc.StartInfo = new System.Diagnostics.ProcessStartInfo(
                "traktor2loopstream.exe",
                "-c icecast.xml");
            proc.StartInfo.WindowStyle      = System.Diagnostics.ProcessWindowStyle.Hidden;
            proc.StartInfo.WorkingDirectory = Program.tools + "ice";
            proc.Start();
            while (true)
            {
                try
                {
                    string str = new System.Net.WebClient().DownloadString("http://127.0.0.1:42069/status2.xsl");
                    if (str.Contains("<pre>"))
                    {
                        break;
                    }
                }
                catch { }
                Application.DoEvents();
                System.Threading.Thread.Sleep(500);
            }
            Application.DoEvents();
            Program.kill();
        }
コード例 #2
0
        void t_Tick(object sender, EventArgs e)
        {
            ((Timer)sender).Stop();
            this.Text += " v" + Application.ProductVersion;

            DFC.coreTest();
            if (Directory.Exists(@"..\..\tools\"))
            {
                if (DialogResult.Yes == MessageBox.Show(
                        "make .dfc (decent file container) ?\r\n\r\nhint: rename the tools folder\r\n         if you don't wanna see this",
                        "new embedded archive",
                        MessageBoxButtons.YesNo,
                        MessageBoxIcon.Question))
                {
                    splash.vis();
                    new DFC().make(splash.pb);
                    Program.kill();
                }
            }
            if (!Program.DO_IT)
            {
                MessageBox.Show("This program should be run by Loopstream!\n\nStop doing that.");
                Program.kill();
            }
            if (!Directory.Exists(Program.tools))
            {
                //MessageBox.Show(Program.tools);
                MessageBox.Show("Could not find LoopstreamTools directory.\n\nWhat the f**k.");
                Program.kill();
            }
            System.Diagnostics.Process[] procs = System.Diagnostics.Process.GetProcessesByName("traktor2loopstream");
            if (procs.Length > 0)
            {
                Program.kill();
            }

            string basedir = Program.tools + "ice";

            if (Directory.Exists(basedir))
            {
                bool ok = false;
                try
                {
                    var txt = File.ReadAllText(Path.Combine(basedir, "web", "statuls.xsl"), Encoding.UTF8);
                    ok = txt.Contains("artist\" /> - </xsl:if><xsl");
                }
                catch { }

                if (!ok)
                {
                    for (int a = 0; a < 3; a++)
                    {
                        try
                        {
                            Directory.Delete(basedir, true);
                            Application.DoEvents();
                            System.Threading.Thread.Sleep(500); // mkdir fails otherwise, ok yes good
                            break;
                        }
                        catch
                        {
                            Application.DoEvents();
                            System.Threading.Thread.Sleep(250);
                        }
                    }
                }
            }

            if (!Directory.Exists(basedir))
            {
                splash.vis();
                new DFC().extract(splash.pb);

                if (DialogResult.Yes == MessageBox.Show(
                        "Would you like me to perform the necessary\n" +
                        "changes to the Traktor configuration files?",
                        "Automatic Install Prompt",
                        MessageBoxButtons.YesNo,
                        MessageBoxIcon.Question))
                {
                    configure_traktor();
                }

                if (DialogResult.Yes == MessageBox.Show(
                        "Would you like me to perform the necessary\n" +
                        "changes to the Virtualdj configuration files?",
                        "Automatic Install Prompt",
                        MessageBoxButtons.YesNo,
                        MessageBoxIcon.Question))
                {
                    configure_virtualdj();
                }
            }
            splash.unvis();
            splash.fx = false;
            splash.gtfo();

            System.Diagnostics.Process proc;
            proc           = new System.Diagnostics.Process();
            proc.StartInfo = new System.Diagnostics.ProcessStartInfo(
                "bin\\traktor2loopstream.exe",
                "-c icecast.xml");
            proc.StartInfo.WindowStyle      = System.Diagnostics.ProcessWindowStyle.Hidden;
            proc.StartInfo.WorkingDirectory = Program.tools + "ice";
            proc.Start();
            for (int a = 0; a < 20; a++)
            {
                try
                {
                    string str = new System.Net.WebClient().DownloadString("http://127.0.0.1:42069/statuls.xsl");
                    if (str.Contains("<pre>"))
                    {
                        break;
                    }
                }
                catch { }
                if (a == 19)
                {
                    MessageBox.Show("the Traktor plugin failed to start ;_;");
                    break;
                }
                Application.DoEvents();
                System.Threading.Thread.Sleep(500);
            }
            Application.DoEvents();
            Program.kill();
        }