C++Language FeatureLearn C++

How To Make An MSIX Windows Installer Package

What is MSIX? Which RAD Studio versions support MSIX package provisioning? What is the structure of an MSIX package? How do I create an MSIX package? How can an MSIX package help with Windows app development?

What is an MSIX installer package?

MSIX is modern file installation package for Windows applications. Windows apps packaged with MSIX can be uploaded to the Windows Store to make is easier for your users to install your apps whether you decide to charge for them or not. It is a Windows app package format that provides a modern packaging experience to all Windows apps. The MSIX package format preserves the functionality of existing app packages and/or install files in addition to enabling new, modern packaging and deployment features to Win32, WPF, and Windows Forms apps.

Which RAD Studio Versions Support MSIX Package Provisioning?

RAD Studio directly supports creating MSIX packaging for both your Delphi and C++ Builder apps directly via the RAD Studio IDE It is easy to create a new MSIX package for your own programs so that they are professional, modern packages. If you would like to release your VCL or FMX framework-based Windows C++ applications in MSIX package form, you should know how to create a MSIX package in C++ Builder.

RAD Studio 10.4.2 release and above, including the Latest RAD Studio 11, has support for MSIX packaging of Windows applications, for Microsoft Store and Enterprise deployment.

What is the structure of an MSIX package?

An MSIX package has application files, and other extra resource files, according to official MSIX information by Microsoft, a MSIX package formation as below,

MSIX Package Diagram
Source: https://docs.microsoft.com/en-us/windows/msix/overview

How do I create an MSIX package?

The RAD Studio MSIX support replaces the older deprecated APPX support, and it is based on a very similar configuration in the project options, for Ad hoc and Store distribution types. Let’s see how we can create Ad hoc MSIX Package.

How to create an MSIX installation package for Ad hoc distribution?

To test or direct distribution without submitting it to the Windows Store, your best option is to create an “Ad hoc” distribution provisioning profile. For an Ad hoc distribution type, you need a certificate file that can be created or browsed by clicking the ellipsis (). You can read more about code-signing and why you need to be signing all your apps in the article on the Embarcadero blog: Do All Your Windows Applications Look Like A Computer Virus?

  1. First, your C++ Project should have a single name like “MyProject”, do not use space or other chars, in my last tests MSIX was not supporting these.
  2. If you have a VCL or FMX Windows application in C++ Builder, go to Project -> Options… menu and go to Deployment->Provisioning section.
  3. Be sure that your application is in Windows 32bit or Windows 64bit platform (MSIX is only for Windows applications) and the Target is Release Configuration. You can choose Build type as Store or Ad hoc as below,

3. Choice Distribution Type as Ad hoc

4. Click to Create self-signed certificate.

5. Choose your certificate file directory, (generally I use a folder in the folder of my application sources). In the Subject section, CN= should be your name or company name (same with your MS Windows Store settings) as in example below and give a password

6. Press Finish to create this pfx certificate file, now all certificate data will be loaded to Provisioning window as in example below,

7. Now we should create Store version. Choose Distribution type Store and fill blanks and the Publisher section carefully as given example below,

CN = Company Name

O = Distributor

7. Be sure your project is in Release mode and Normal Configuration (Because we use Ad hoc settings)

8. Go to Project-> Deployment menu

After this step follow the Certification Installation and MSIX File installation are described in the Official DocWiki of Embarcadero..

All these steps are required to release your C++ application in the Microsoft Store.

Note that self-signed code-certificates are ok for the Windows store and some ad-hoc situations, but your app and its executable assets really should be code-signed with a ‘full’ code signing certificate from a recognized signing authority such as Sectigo or you may find your apps are blocked by anti-virus and security technologies such as Microsoft Windows Smart Screen. Refer to Ian Barker’s article on the Embaracdero blog site for more information on how to purchase and use authoritative code-signing certificates.

C++ Builder is the easiest and fastest C and C++ IDE for building simple or professional applications on the Windows, MacOS, iOS & Android operating systems. It is also easy for beginners to learn with its wide range of samples, tutorials, help files, and LSP support for code. RAD Studio’s C++ Builder version comes with the award-winning VCL framework for high-performance native Windows apps and the powerful FireMonkey (FMX) framework for cross-platform UIs.

There is a free C++ Builder Community Edition for students, beginners, and startups; it can be downloaded from here. For professional developers, there are Professional, Architect, or Enterprise versions of C++ Builder and there is a trial version you can download from here.

Oh hi there 👋
It’s nice to meet you.

Sign up to receive awesome C++ content in your inbox, every day.

We don’t spam! Read our privacy policy for more info.

About author

Dr. Yilmaz Yoru has 35+ years of coding with more than 30+ programming languages, mostly C++ on Windows, Android, Mac-OS, iOS, Linux, and some other operating systems. He graduated and received his MSc and PhD degrees from the Department of Mechanical Engineering of Eskisehir Osmangazi University. He is the founder and CEO of ESENJA LLC Company. His interests are Programming, Thermodynamics, Fluid Mechanics, Artificial Intelligence, 2D & 3D Designs, and high-end innovations.
Related posts
C++C++11C++14C++17C++20Learn C++

What Is The Priority Queue (std::priority_queue) In Modern C++?

C++C++11C++14C++17C++20

What Is The Stack (std::stack) In Modern C++?

C++C++11C++14C++17C++20Learn C++

What Is The Queue (std::queue) In Modern C++?

C++C++11C++14C++17Learn C++SyntaxTemplates

What Are The Logical Operation Metafunctions In Modern C++?