Originally, if I wanted to send someone a registry free UI plugin I created, I would have to zip the plugin binaries and manifest file. Then the user would have to extract the binaries to a location, copy the manifest file to the ProgramData location, and modify the manifest file. The process was cumbersome and error prone. I decided to automate the process and create installer for registry free UI Plugins.
Not an actual image of my Copier solution
The first thing that I discovered was that I could not call my solution “installer” or “setup.” If you run any executable that contains words “install” or “setup,” and the executable does not modify the windows registry, the operating system displays warning that your installer failed. In order to prevent confusion, I named my solution “copier.”
The next challenge was a realization that the copier would have to handle a two-step process: configuring the installer and actually installing the plugin on the user computer. Two steps would run asynchronously on different machines. I did not want a developer to modify code in order to switch between two modes or for end users to select which mode they are running. I chose to create a project that behaves differently based on the project configuration setting. If the project is built using the “debug” configuration setting, the setup process is run. If the project is built using the “release” configuration, the installation process is run.
You can find a Visual Studio template here.