Windows - Software Packages
In Windows, software is usually packaged as a dot exe or executable file. ​
Executable file: A file containing instructions for a computer to execute when they’re run,  like copy this file from here to here, ​install this program or more generically perform this operation
- They also include things like text or computer code images ​that the program might use and potentially something called an MSI file.
- Microsoft Install Package(.msi) and MSI files: Microsoft Install Package is a file extension used to guide a program called Windows Installer in the installation, maintenance, and removal of programs of the windows operating systems. MSI files are a combination of of databases that contain installation instructions in different tables along with all the files
- contains an installation database, summary information, and data streams for each part of the installation
- The .msi file may also include internal source files and external source files needed for the installation
- Microsoft Install Package(.msi) and MSI files: Microsoft Install Package is a file extension used to guide a program called Windows Installer in the installation, maintenance, and removal of programs of the windows operating systems. MSI files are a combination of of databases that contain installation instructions in different tables along with all the files
So when would you use an MSI file and the Windows installer? ​And when would you use an executable with a custom installer packaged in ​something like setup dot EXE?
-  if you want precise granular control over the actions Windows ​takes when installing your software, you might go the custom installer route. ​
- This can be tricky though, especially when managing things like code dependencies
- On the flip side, using the Windows installer guided by an MSI file ​takes care of a lot of the bookkeeping and set up for you
- has some pretty strict rules about how the software gets installed
Windows store: A Windows store is an application repository or warehouse where you can download and install universal Windows platform apps
APPX: An APPX is another way to package contents of a file to act like a unit of distribution
But what about installing software from the command line, and ​why would you need to do this in the first place?  ​Installing executables from the command line can be handy in ​lots of IT Support scenarios including automatic installations.  -  ​You might want to write a script or ​use a configuration management tool to install some software automatically ​without needing a human to click buttons in an installation wizard
Running EXE files from the command line is pretty simple. ​You open up a command prompt or PowerShell, ​change into the directory where the executable is and type in its name.
- You can also just type the absolute path of the EXE from ​wherever you are in the file system, like this, ​C:\Users\cindy\Desktop\hello.exe.

Pro tip, try using the slash question mark parameter when running a package from ​the command line to see what kinds of sub commands the package might support. ​If the package doesn’t have any help related options, ​your best bet is to check out the vendor’s documentation.
Software installation package, update package, or hotfix package created with the Microsoft Self-Extractor, can be executed using the following command lines:Â
- /extract:[path]: Extracts the content of the package to the path folder. If a path isn’t specified, then a Browse dialog box appears.
- /log:[path to log file]: Enables verbose logging (more detailed information recorded in the log file) for the update installation.
- /lang:lcid: Sets the user interface to the specified locale when multiple locales are available in the package.
- /quiet: Runs the package in silent mode.
- /passive: Runs the update without any interaction from the user.
- /norestart: Prevents prompting of the user when a restart of the computer is needed.
- /forcerestart: Forces a restart of the computer as soon as the update is finished. You can always type /?, /h, or /help from the command line to view these options.
The app packager used in the Windows Software Development Kit (SDK) and Microsoft Visual Studio includes a program called MakeAppx.exe
- MakeAppx.exe is a tool that creates an app package from files on disk or extracts the files from an app package to disk.
- For Windows 8.1 and higher, this program can also create and extract app package bundles.
- primarily used by software developers.
The Microsoft Store, included in the Windows OS, is the primary source for apps, games, and videos in Windows.
-
only contains apps and programs certified for compatibility and curated for content.
-
Software installed through the Microsoft store is automatically updated by default.
-
Some organizations may disable the Microsoft store on user computers to limit users’ ability to install new applications without authorization.
-
Installation Package: https://docs.microsoft.com/en-us/windows/win32/msi/installation-package
-
App packager (MakeAppx.exe): https://docs.microsoft.com/en-us/windows/win32/appxpkg/make-appx-package–makeappx-exe-
-
Portable Executables: https://docs.microsoft.com/en-us/windows/win32/debug/pe-format
-
Self-extractor: https://docs.microsoft.com/en-us/troubleshoot/windows-client/deployment/command-switches-supported-by-self-extractor-package