Example #1
0
        /// <summary>
        /// Get the target folder where to save the HTML link files. If Direct Mode, the target folder is in the /DIRECT=folder
        /// parameter. If not Direct Mode, the target folder is the program's temporary directory (and make sure it is created).
        /// Normally it should be located at "C:\Users\Aurelian\AppData\Local\Temp\HTMtied".
        /// </summary>
        /// <param name="isDirectMode">True if we are in Direct Mode, false otherwise.</param>
        /// <returns>The target folder pathname.</returns>
        private static string GetTargetFolder(out bool isDirectMode)
        {
            string targetFolder = string.Empty;

            // See if the command line contains the /DIRECT argument
            string directArg = Array.Find <string>(Environment.GetCommandLineArgs(), arg => arg.StartsWith(Properties.Resources.StringDirectParameter, StringComparison.OrdinalIgnoreCase));

            isDirectMode = !string.IsNullOrEmpty(directArg);
            if (isDirectMode)
            {
                // Get the target folder part from the /DIRECT=folder argument
                string[] parts = directArg.Split(new char[] { '=' }, 2);
                if (parts.Length == 2)
                {
                    targetFolder = parts[1];

                    // Try to create the Target folder if it does not exist
                    if (!Directory.Exists(targetFolder))
                    {
                        Directory.CreateDirectory(targetFolder);
                    }

                    // Return a correct and existing target folder for the Direct Mode
                    if (Directory.Exists(targetFolder))
                    {
                        return(targetFolder);
                    }
                }

                // We are in Direct Mode, but the target folder parameter is invalid, throw an exception
                throw new DirectoryNotFoundException();
            }
            else
            {
                targetFolder = UrlConverter.GetProgramTempDirectory();
            }

            return(targetFolder);
        }