public override void Run()
        {
            var creationInfo = Owner as ProjectCreateInformation;
            if (creationInfo == null)
                throw new ArgumentException("Owner must be a ProjectCreateInformation.");

            using (var dialog = new ApplicationProjectWizardDialog()) {
                if (dialog.ShowDialog() != DialogResult.OK)
                    throw new InvalidProjectFileException("Project creation cancelled");

                // Save settings
                ProjectCreateData.CertificatePath = dialog.CertificatePath;
                ProjectCreateData.CertificateThumbprint = dialog.CertificateThumbprint;
                ProjectCreateData.TargetFrameworkVersion = dialog.TargetFrameworkVersion;
                ProjectCreateData.AdditionalLibraryNames = dialog.AdditionalLibraryNames;
            }
        }
        /// <summary>
        /// Runs custom wizard logic at the beginning of a template wizard run.
        /// </summary>
        /// <param name="automationObject">The automation object being used by the template wizard.</param><param name="replacementsDictionary">The list of standard parameters to be replaced.</param><param name="runKind">A <see cref="T:Microsoft.VisualStudio.TemplateWizard.WizardRunKind"/> indicating the type of wizard run.</param><param name="customParams">The custom parameters with which to perform parameter replacement in the project.</param>
        public void RunStarted(object automationObject, Dictionary<string, string> replacementsDictionary, WizardRunKind runKind, object[] customParams)
        {
            using (var dialog = new ApplicationProjectWizardDialog())
            {
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    CertificatePath = dialog.CertificatePath;
                    CertificateThumbprint = dialog.CertificateThumbprint;
                    TargetFrameworkVersion = dialog.TargetFrameworkVersion;
                    AdditionalLibraryNames = dialog.AdditionalLibraryNames;
                }
                else
                {
                    // About
                    throw new WizardCancelledException("Wizard cancelled.");
                }
            }

            replacementsDictionary.Add("$ProjectTypeGuid$", ProjectConstants.ProjectTypeGuid);
            replacementsDictionary.Add("$Target$", ProjectConstants.TargetValue);
            replacementsDictionary.Add("$PackageExt$", ProjectConstants.PackagExt);
            replacementsDictionary.Add("$PackageFileNameTag$", ProjectConstants.PackageFileNameTag);
            replacementsDictionary.Add("$TargetFrameworkVersion$", TargetFrameworkVersion);
            replacementsDictionary.Add("$ApkCertificatePath$", CertificatePath);
            replacementsDictionary.Add("$ApkCertificateThumbprint$", CertificateThumbprint);
        }