(maint) adding foss-stable.yaml
(maint) update gitignore
(maint) add visual studio project

This will assist in better design time handling
of working with WiX
(maint) reducing errors from the project file
(maint) small fixes to wix files

This is provided to fix small issues with pathing in the wix files
Merge branch 'maint/master/small_fixes_to_wix'
(maint) Details about Git version / .gitconfig conflicts
(#22700) Add puppet to path

This adds puppet and facter to the path without clobbering any other
environment settings on the machine (aka ruby installs).
(#22368) allow agent environment

This allows agent environment to be set during the installer and adds
environment=ENV to the puppet.conf file. By default this will set environment
to production.

This brings parity of this feature to Windows as compared with non-Windows OSes (they already have
the ability to specify agent environment during installation).

You can set this by passing it as a MSI property PUPPET_AGENT_ENVIRONMENT.
Merge pull request #55 from ferventcoder/ticket/master/22700-add_puppet_to_path

(#22700) Add Puppet to Path
Merge pull request #54 from ferventcoder/ticket/master/22368-allow_agent_environment

(#22368) Allow Agent Environment Variable
(maint) createLine for Agent

This needs to produce the same behavior as the other items until items are
queried in the inifile prior to writing back to it.
 (#18268) Specify service startup mode

This allows the service start mode to be specified on the command line as an
MSI parameter to the installer PUPPET_AGENT_STARTUP_MODE.

Valid choices are `Automatic` (default), `Manual` and `Disabled`. If you put in anything
besides these, it will default to `Automatic`.
Merge branch 'ticket/master/18268-specify_service_start_mode'

* ticket/master/18268-specify_service_start_mode:
  (#18268) Specify service startup mode
(#20281) Save the command line value to the correct property

Previously, the BeforeAppSearch custom actions were saving properties of the
form PUPPET_* to properties named [CMDLINE_PUPPET_*] where the brackets are
part of the name. The AppSearch actions would then overwrite the PUPPET_*
properties with the values from the registry, if any, from the very first
installation.

The AfterAppSearch custom actions would retrieve the values from
CMDLINE_PUPPET_*, but the values would be NULL, and so the custom actions would
never run.

This commit changes the BeforeAppSearch custom actions to write to the
CMDLINE_PUPPET_* properties instead of [CMDLINE_PUPPET_*] so that they can be
retrieved correctly. As a result, any property specified on the command line
will override any value that was entered previously.

Note values entered on the command line will not overwrite values in
puppet.conf due to our use of createLine instead of addLine, and that will be
fixed in a future commit.

Paired-with: Rob Reynolds <rob@puppetlabs.com>
(#20281) overwrite existing puppet.conf settings

Whenever you add a value or pass a value to the installer and the puppet.conf
already exists from a pre-existing or prior installation, the new values are
not written to the file. This changes that so that what you pass always
overrides whatever is already there.
Merge pull request #58 from ferventcoder/ticket/master/20281-commandline_override

(#20281) Overwrite Existing puppet.conf Settings
(#18268) Remove unnecessary startup mode components

This removes a property and a default value that are unnecessary to the startup
mode. This also removes three custom actions that could potentially cause
issues if they are not called in all scenarios (i.e. repair mode).
Merge pull request #60 from ferventcoder/ticket/master/18268-specify_service_start_mode

(#18268) Remove unnecessary startup mode components
(#22906) remember properties during upgrade

In previous versions of puppet, we did not overwrite existing settings. Now
that we are with the work done in #20281, we have found that the way we are
doing the remember me property doesn't work with the way we were doing
default values. This change fixes the default values to move them to a
customaction that happens just after the commandline / registry search to set
the value. If there is still no value, then the value is set to a default.
This happens prior to the GUI so a value from the registry or supplied on the
command line will show up as the value in the UI boxes.