Example #1
0
        private int HandleSingleFile()
        {
            RegKeyEntry regKeyEntry = Files[0];
            if (!string.IsNullOrEmpty(MergeFile))
            {
                Console.WriteLine("Writing {0}...", MergeFile);

                RegFileExportOptions options = RegFileExportOptions.None;
                if (NoEmptyKeys)
                    options |= RegFileExportOptions.NoEmptyKeys;

                CreateRegFileExporter(MergeFile).Export(regKeyEntry, MergeFile, options);
                Console.WriteLine();
            }
            if (WriteToTheRegistry)
            {
                RegEnvReplace env = new RegEnvReplace();
                if (!string.IsNullOrEmpty(ParamsFilename))
                {
                    if (!File.Exists(ParamsFilename))
                    {
                        Console.WriteLine("ERROR, /params file '{0}' not found", ParamsFilename);
                        return 10;
                    }
                    try
                    {
                        if (ParamsFilename.EndsWith(".ini", StringComparison.OrdinalIgnoreCase))
                        {
                            env.ReadIniFile(ParamsFilename);
                        }
                        else if (ParamsFilename.EndsWith(".xml", StringComparison.OrdinalIgnoreCase))
                        {
                            env.ReadXmlFile(ParamsFilename);
                        }
                        else
                        {
                            Console.WriteLine("ERROR, /params file '{0}' has an unsupported extension (only '.xml' and '.ini' are allowed)", ParamsFilename);
                            return 10;
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("ERROR, unable to read /params file '{0}'", ParamsFilename);
                        Console.WriteLine(e.Message);
                        return 10;
                    }
                }
                env.MergeEnvironmentVariables();
                RegistryWriteOptions registryWriteOptions = RegistryWriteOptions.Recursive;
                if (AllAccess)
                    registryWriteOptions |= RegistryWriteOptions.AllAccessForEveryone;
                regKeyEntry.WriteToTheRegistry(registryWriteOptions, env, CurrentRegistryView);
            }
            else if (AllAccess)
            {
                Console.WriteLine("ERROR, /allaccess is only allowed in combination with /write");
                return 10;
            }
            else if( !string.IsNullOrEmpty(ParamsFilename) )
            {
                Console.WriteLine("ERROR, /params is only allowed in combination with /write");
                return 10;
            }

            return 0;
        }