Esempio n. 1
0
        private static String GatherDictionary(String message, Log log, PackageExecutionSettingsInfo executionInfo)
        {
            // Gather information from a variety of sources
            Dictionary <String, String> dict = new Dictionary <String, String>();

            dict.Add("Environment.OSVersion.Version", Environment.OSVersion.Version.ToString());
            dict.Add("Environment.OSVersion.Platform", Environment.OSVersion.Platform.ToString());
            dict.Add("Environment.OSVersion.ServicePack", Environment.OSVersion.ServicePack);
            dict.Add("Environment.OSVersion.VersionString", Environment.OSVersion.VersionString);

            dict.Add("Environment.CurrentDirectory", Environment.CurrentDirectory);
            dict.Add("Environment.ProcessorCount", Environment.ProcessorCount.ToString());

            dict.Add("Env.IsWow64", Env.IsWow64 ? "true" : "false");
            dict.Add("Env.IsX64", Env.IsX64   ? "true" : "false");
            dict.Add("Env.ServicePack", Env.ServicePack.ToString());
            dict.Add("Env.Location", Env.Location);

            dict.Add("CultureInfo.InstalledUICulture", CTS(CultureInfo.InstalledUICulture));
            dict.Add("CultureInfo.CurrentCulture", CTS(CultureInfo.CurrentCulture));
            dict.Add("CultureInfo.CurrentUICulture", CTS(CultureInfo.CurrentUICulture));

            //

            dict.Add("PackageInfo.Source", PackageInfo.Source.ToString());
            dict.Add("PackageInfo.SystemRestore", PackageInfo.SystemRestore   ? "true" : "false");
            dict.Add("PackageInfo.LiteMode", PackageInfo.LiteMode        ? "true" : "false");
            dict.Add("PackageInfo.IgnoreCondition", PackageInfo.IgnoreCondition ? "true" : "false");
            dict.Add("PackageInfo.I386Install", PackageInfo.I386Install     ? "true" : "false");
            dict.Add("PackageInfo.I386Directory", PackageInfo.I386Directory == null ? "" : PackageInfo.I386Directory.FullName);                // is this too much info?

            if (PackageInfo.Package == null)
            {
                dict.Add("PackageInfo.Package", "null");
            }
            else
            {
                dict.Add("PackageInfo.Package.Name", PackageInfo.Package.Name);
                dict.Add("PackageInfo.Package.Version", PackageInfo.Package.Version.ToString());
            }

            //

            if (executionInfo == null)
            {
                dict.Add("ExecutionInfo", "null");
            }
            else
            {
                dict.Add("ExecutionInfo.MakeBackup", executionInfo.MakeBackup              ? "true" : "false");
                dict.Add("ExecutionInfo.BackupDirectory", executionInfo.BackupDirectory == null ? "" : executionInfo.BackupDirectory.FullName);
                dict.Add("ExecutionInfo.ApplyToDefault", executionInfo.ApplyToDefault          ? "true" : "false");
                dict.Add("ExecutionInfo.CDImage", executionInfo.CDImage == null         ? "null" : executionInfo.CDImage.RootDirectory.FullName);
                dict.Add("ExecutionInfo.CreateSystemRestorePoint", executionInfo.CreateSystemRestorePoint ? "true" : "false");
                dict.Add("ExecutionInfo.ExecutionMode", executionInfo.ExecutionMode.ToString());
                dict.Add("ExecutionInfo.LiteMode", executionInfo.LiteMode                ? "true" : "false");
                dict.Add("ExecutionInfo.RequiresRestart", executionInfo.RequiresRestart         ? "true" : "false");
            }

            //

            dict.Add("InstallationInfo.FailedCondition", InstallationInfo.FailedCondition          ? "true" : "false");
            dict.Add("InstallationInfo.InstallationAborted", InstallationInfo.InstallationAborted      ? "true" : "false");
            dict.Add("InstallationInfo.ToolsDestination", InstallationInfo.ToolsDestination == null ? "null" : InstallationInfo.ToolsDestination.FullName);
            dict.Add("InstallationInfo.UseSelector", InstallationInfo.UseSelector == null ? "null" : InstallationInfo.UseSelector.Value ? "true" : "false");
            dict.Add("InstallationInfo.WizStyle", InstallationInfo.WizStyle.ToString());
            dict.Add("InstallationInfo.ProgramMode", InstallationInfo.ProgramMode.ToString());

            //

            dict.Add("InstallationResources.IsCustomized", InstallerResources.IsCustomized ? "true" : "false");
            if (InstallerResources.IsCustomized)
            {
                dict.Add("InstallationResources.CustomizedSettings.InstallerName", InstallerResources.CustomizedSettings.InstallerName);
                dict.Add("InstallationResources.CustomizedSettings.InstallerFullName", InstallerResources.CustomizedSettings.InstallerFullName);
                dict.Add("InstallationResources.CustomizedSettings.InstallerDeveloper", InstallerResources.CustomizedSettings.InstallerDeveloper);
                dict.Add("InstallationResources.CustomizedSettings.InstallerWebsite", InstallerResources.CustomizedSettings.InstallerWebsite);
            }

            dict.Add("InstallerResources.CurrentLanguage.LanguageName", InstallerResources.CurrentLanguage.LanguageName);
            dict.Add("InstallerResources.CurrentLanguage.LcidName", InstallerResources.CurrentLanguage.LcidName);
            dict.Add("DateTime.Now", DateTime.Now.ToString("o"));                     // o == roundtrip, includes timezone

            // sort by keyname
            List <String> allKeys = new List <String>();

            allKeys.AddRange(dict.Keys);
            allKeys.Sort();

            StringBuilder sb = new StringBuilder();

            foreach (String key in allKeys)
            {
                String value = dict[key];

                sb.Append(key);
                sb.Append(" : ");
                sb.AppendLine(dict[key]);
            }

            sb.AppendLine("Message:");
            sb.AppendLine(message);

            sb.AppendLine();

            if (log == null)
            {
                sb.AppendLine("Log Null");
            }
            else
            {
                sb.AppendLine("Notable Messages:");
                foreach (LogItem item in log)
                {
                    if (item.Severity != LogSeverity.Info)
                    {
                        item.Write(sb);
                    }
                }
            }

            return(sb.ToString());
        }
Esempio n. 2
0
        public static Boolean SendFeedback(Uri uri, String message, Log log, PackageExecutionSettingsInfo executionInfo)
        {
            String data = GatherDictionary(message, log, executionInfo);

            return(SendString(data, uri));
        }