Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

ITSA - Mass Silent installer - Free Open source

Moderator
Staff member
Moderator
Joined
Oct 2, 2009
Messages
561
Reaction score
118
Hello Showcase and Release Section!

A few days ago a very good friend created something called ITSA, Install That Sh*t Already.
It's a mass silent installer, got a new windows and hate installing programs? Then this is a program you would like to download.

The programs that are used a lot daily are added, for example:
Chrome
Notepad++
Steam
VLC
Spotify
Skype
Firefox
Dropbox

And many many more!

He is still working on this project, but it's great that he is making this, there are several other programs that can do this installing, but you have to pay for these programs.
He will add more programs that are used daily!

He is also working on new features, currently there is no option to select where you would like to install your programs, it uses the default HDD where windows is on.

It's open source, you can download the source and the .exe here:


100% Credits for: EaterOfCode
 
Last edited:
• ♠️​ ♦️ ♣️ ​♥️ •
Joined
Mar 25, 2012
Messages
909
Reaction score
464
wait this for window 8 only?

App.config:
PHP:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
      
    </startup>
</configuration>


No, it should run for Windows 7 and 8, since it's build with .NET 4.5.
It will work with desktop programs and it will not work for Windows 8 metro apps.

InstallingApp.cs:
PHP:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace ITSA.Objects
{
    public class InstallingApp : INotifyPropertyChanged
    {
        public App Origin { get; set; }
        public double DownloadPercentage { get; set; }
        public string Status { get; set; }
        private string TempName;
        public void Start()
        {
            WebClient wc = new WebClient();
            TempName = System.IO.Path.GetTempPath() + '\\' + Origin.Title + '.' + Origin.Extension;
            wc.DownloadFileCompleted += wc_DownloadFileCompleted;
            wc.DownloadProgressChanged += wc_DownloadProgressChanged;
            wc.DownloadFileAsync(Origin.DownloadUriForThisSystem, TempName);
            Status = "Downloading";
            NotifyPropertyChanged("Status");
        }

        void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            DownloadPercentage = e.ProgressPercentage;
            NotifyPropertyChanged("DownloadPercentage");
        }

        void wc_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
        {
            Status = "Installing";
            NotifyPropertyChanged("Status");
            DownloadPercentage = 100;
            NotifyPropertyChanged("DownloadPercentage");
            Install();
        }
        public void Install()
        {
            ProcessStartInfo psi = new ProcessStartInfo();
            if (Origin.InstallCommand[0] == '{')
            {
                psi.FileName = TempName;
                psi.Arguments = String.Format(Origin.InstallCommand, "").Trim();
            }
            else
            {
                psi.UseShellExecute = true;
                string fullCommand = String.Format(Origin.InstallCommand, '"' + TempName + '"');
                int firstSplit = fullCommand.IndexOf(' ');
                psi.FileName = fullCommand.Substring(0, firstSplit).TrimEnd();
                psi.Arguments = fullCommand.Substring(firstSplit).TrimStart();
            }
            Process p = new Process()
            {
                StartInfo = psi,
                EnableRaisingEvents = true
            };
            p.Exited += (sender, e) =>
            {
                Status = p.ExitCode == 0 ? "Completed" : "Error?";
                NotifyPropertyChanged("Status");
                if (p.ExitCode != 0 && System.Windows.MessageBox.Show("The installation of '" + Origin.Title + "' may have failed :(\r\nDo you want to try to install it yourself?", "Oops", System.Windows.MessageBoxButton.YesNo) == System.Windows.MessageBoxResult.Yes)
                {
                    try
                    {
                        Process.Start(TempName);
                    }
                    catch
                    {

                    }
                }
            };
            try
            {
                p.Start();
            }
            catch (Exception e)
            {
                Status = "Broken";
                NotifyPropertyChanged("Status");
                if (System.Windows.MessageBox.Show("The installation of '" + Origin.Title + "' is broken :(\r\nDo you want to try downloading it yourself? (it may be that the download link is pointing to a page)", "Oops", System.Windows.MessageBoxButton.YesNo) == System.Windows.MessageBoxResult.Yes)
                {
                    Process.Start(Origin.DownloadUriForThisSystem.AbsoluteUri);
                }
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }
}


It's just downloading and starting the setups in silent shell mode with raising events set to true. So it will not work for some installer engines I bet.

I would not pay for it, specially when I got the source now. He did not even use more than one project, simple as it is, it has not much logic, that's why.
 
Last edited:
Moderator
Staff member
Moderator
Joined
Oct 2, 2009
Messages
561
Reaction score
118
App.config:
PHP:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
      
    </startup>
</configuration>


No, it should run for Windows 7 and 8, since it's build with .NET 4.5.
It will work with desktop programs and it will not work for Windows 8 metro apps.

InstallingApp.cs:
PHP:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace ITSA.Objects
{
    public class InstallingApp : INotifyPropertyChanged
    {
        public App Origin { get; set; }
        public double DownloadPercentage { get; set; }
        public string Status { get; set; }
        private string TempName;
        public void Start()
        {
            WebClient wc = new WebClient();
            TempName = System.IO.Path.GetTempPath() + '\\' + Origin.Title + '.' + Origin.Extension;
            wc.DownloadFileCompleted += wc_DownloadFileCompleted;
            wc.DownloadProgressChanged += wc_DownloadProgressChanged;
            wc.DownloadFileAsync(Origin.DownloadUriForThisSystem, TempName);
            Status = "Downloading";
            NotifyPropertyChanged("Status");
        }

        void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            DownloadPercentage = e.ProgressPercentage;
            NotifyPropertyChanged("DownloadPercentage");
        }

        void wc_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
        {
            Status = "Installing";
            NotifyPropertyChanged("Status");
            DownloadPercentage = 100;
            NotifyPropertyChanged("DownloadPercentage");
            Install();
        }
        public void Install()
        {
            ProcessStartInfo psi = new ProcessStartInfo();
            if (Origin.InstallCommand[0] == '{')
            {
                psi.FileName = TempName;
                psi.Arguments = String.Format(Origin.InstallCommand, "").Trim();
            }
            else
            {
                psi.UseShellExecute = true;
                string fullCommand = String.Format(Origin.InstallCommand, '"' + TempName + '"');
                int firstSplit = fullCommand.IndexOf(' ');
                psi.FileName = fullCommand.Substring(0, firstSplit).TrimEnd();
                psi.Arguments = fullCommand.Substring(firstSplit).TrimStart();
            }
            Process p = new Process()
            {
                StartInfo = psi,
                EnableRaisingEvents = true
            };
            p.Exited += (sender, e) =>
            {
                Status = p.ExitCode == 0 ? "Completed" : "Error?";
                NotifyPropertyChanged("Status");
                if (p.ExitCode != 0 && System.Windows.MessageBox.Show("The installation of '" + Origin.Title + "' may have failed :(\r\nDo you want to try to install it yourself?", "Oops", System.Windows.MessageBoxButton.YesNo) == System.Windows.MessageBoxResult.Yes)
                {
                    try
                    {
                        Process.Start(TempName);
                    }
                    catch
                    {

                    }
                }
            };
            try
            {
                p.Start();
            }
            catch (Exception e)
            {
                Status = "Broken";
                NotifyPropertyChanged("Status");
                if (System.Windows.MessageBox.Show("The installation of '" + Origin.Title + "' is broken :(\r\nDo you want to try downloading it yourself? (it may be that the download link is pointing to a page)", "Oops", System.Windows.MessageBoxButton.YesNo) == System.Windows.MessageBoxResult.Yes)
                {
                    Process.Start(Origin.DownloadUriForThisSystem.AbsoluteUri);
                }
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }
}


It's just downloading and starting the setups in silent shell mode with raising events set to true. So it will not work for some installer engines I bet.

I would not pay for it, specially when I got the source now. He did not even use more than one project, simple as it is, it has not much logic, that's why.

He is still improving, it's just a fun project also.
There are a few websites that have this kind of program but then payed.

Feel free to give suggestions btw ^^
 
Google my name...
Joined
Nov 9, 2011
Messages
483
Reaction score
151


'nuff said.

Although it has a much larger list to it's name, the GUI looks too simplistic and I'm not a huge fan of it.
 
Junior Spellweaver
Joined
Apr 16, 2013
Messages
148
Reaction score
19
Doesn't matter there is something like it already, this is open source also. Big diffrence if you ask me. And ew, when did that website get designed? 1995?

what is the diffence i like the website, easy and simple to use.
 
Initiate Mage
Joined
Oct 8, 2013
Messages
3
Reaction score
0
App.config:
PHP:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
      
    </startup>
</configuration>


No, it should run for Windows 7 and 8, since it's build with .NET 4.5.
It will work with desktop programs and it will not work for Windows 8 metro apps.

InstallingApp.cs:
PHP:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace ITSA.Objects
{
    public class InstallingApp : INotifyPropertyChanged
    {
        public App Origin { get; set; }
        public double DownloadPercentage { get; set; }
        public string Status { get; set; }
        private string TempName;
        public void Start()
        {
            WebClient wc = new WebClient();
            TempName = System.IO.Path.GetTempPath() + '\\' + Origin.Title + '.' + Origin.Extension;
            wc.DownloadFileCompleted += wc_DownloadFileCompleted;
            wc.DownloadProgressChanged += wc_DownloadProgressChanged;
            wc.DownloadFileAsync(Origin.DownloadUriForThisSystem, TempName);
            Status = "Downloading";
            NotifyPropertyChanged("Status");
        }

        void wc_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            DownloadPercentage = e.ProgressPercentage;
            NotifyPropertyChanged("DownloadPercentage");
        }

        void wc_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
        {
            Status = "Installing";
            NotifyPropertyChanged("Status");
            DownloadPercentage = 100;
            NotifyPropertyChanged("DownloadPercentage");
            Install();
        }
        public void Install()
        {
            ProcessStartInfo psi = new ProcessStartInfo();
            if (Origin.InstallCommand[0] == '{')
            {
                psi.FileName = TempName;
                psi.Arguments = String.Format(Origin.InstallCommand, "").Trim();
            }
            else
            {
                psi.UseShellExecute = true;
                string fullCommand = String.Format(Origin.InstallCommand, '"' + TempName + '"');
                int firstSplit = fullCommand.IndexOf(' ');
                psi.FileName = fullCommand.Substring(0, firstSplit).TrimEnd();
                psi.Arguments = fullCommand.Substring(firstSplit).TrimStart();
            }
            Process p = new Process()
            {
                StartInfo = psi,
                EnableRaisingEvents = true
            };
            p.Exited += (sender, e) =>
            {
                Status = p.ExitCode == 0 ? "Completed" : "Error?";
                NotifyPropertyChanged("Status");
                if (p.ExitCode != 0 && System.Windows.MessageBox.Show("The installation of '" + Origin.Title + "' may have failed :(\r\nDo you want to try to install it yourself?", "Oops", System.Windows.MessageBoxButton.YesNo) == System.Windows.MessageBoxResult.Yes)
                {
                    try
                    {
                        Process.Start(TempName);
                    }
                    catch
                    {

                    }
                }
            };
            try
            {
                p.Start();
            }
            catch (Exception e)
            {
                Status = "Broken";
                NotifyPropertyChanged("Status");
                if (System.Windows.MessageBox.Show("The installation of '" + Origin.Title + "' is broken :(\r\nDo you want to try downloading it yourself? (it may be that the download link is pointing to a page)", "Oops", System.Windows.MessageBoxButton.YesNo) == System.Windows.MessageBoxResult.Yes)
                {
                    Process.Start(Origin.DownloadUriForThisSystem.AbsoluteUri);
                }
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }
}


It's just downloading and starting the setups in silent shell mode with raising events set to true. So it will not work for some installer engines I bet.

I would not pay for it, specially when I got the source now. He did not even use more than one project, simple as it is, it has not much logic, that's why.

I think you're talking about the engines which download stuff first? because most times those just download an full installation file, which I do now in the app, and if it just doesn't want to work, I just give a link to the install and put a star at the end of the name ;)

If there are any other install engines that won't work, please report it :) then I will fix it for that
 
• ♠️​ ♦️ ♣️ ​♥️ •
Joined
Mar 25, 2012
Messages
909
Reaction score
464
I think you're talking about the engines which download stuff first?

In fact I was talking about your method and the installer cases you download. Not every installer is the same, I know of several installers that are not possible to run in shell mode automatically. Most installers need to done by opening and setting the path etc. Only msi files can install in shell mode without any prompt by the user always.


There are tons of programs in the world wide web, I do not bet you will add all of them that are not working in shell mode by hand. ;)
 
Initiate Mage
Joined
Oct 8, 2013
Messages
3
Reaction score
0
In fact I was talking about your method and the installer cases you download. Not every installer is the same, I know of several installers that are not possible to run in shell mode automatically. Most installers need to done by opening and setting the path etc. Only msi files can install in shell mode without any prompt by the user always.


There are tons of programs in the world wide web, I do not bet you will add all of them that are not working in shell mode by hand. ;)

Let's get this straight first: UseShellExecute is only true because it then uses the PATH environment variable to look up the location of the "file" I call, so now I can call msiexec for example

What you're talking about is the silent install command and yes that's true I can't fix all those. And Im not gonna fix them either. Those get a star behind the name (which means I can't silently install them). This app is mainly to make it easier to install all your stuff when you (re-)installed your pc. It can easily save 1-3 hours time to find all the downloads and install them. It's not a Program DB just a boost for your fresh install ;) I real life tested it 2 days ago, it works. (but Spotify is a witch. "I DONT WANT ADMINISTRATOR RIGHTS EWWW NOOO" fixed it already tho)
 
Intelligent DoucheBag
Loyal Member
Joined
Jan 5, 2008
Messages
1,698
Reaction score
288
Although it has a much larger list to it's name, the GUI looks too simplistic and I'm not a huge fan of it.

It's a silent installer, who cares about gui?

Doesn't matter there is something like it already, this is open source also. Big diffrence if you ask me. And ew, when did that website get designed? 1995?

Again, who cares? it's understandable and it does it's purpose

what is the diffence i like the website, easy and simple to use.

Exactly, it completes it's purpose




On-topic:

I find it a bit useless, because not only ninite but even more silent installers are released on the web with big program lists.
not to mention you can request programs to be added.
 
Junior Spellweaver
Joined
Apr 16, 2013
Messages
148
Reaction score
19
I find it a bit useless, because not only ninite but even more silent installers are released on the web with big program lists.
not to mention you can request programs to be added.

we shouldn't really question the "usefulness" of an application because like every one say there are more then one of every one program out there, but what the program can do extra, faster or even better.
 
Back
Top