File archiver, archive files into a zip file
Code organization

The Main method should be very short, and have almost no logic at all, simply call other methods and create very few objects. Something like this:

static void Main(string[] args)
{
    string filename = archiveCreator.GenerateRandomFilename();

    string userName = Environment.UserName;
    string startDir = $"c:/users/{userName}/test_folder";
    string zipFile = $"c:/users/{userName}/archive/{finalString}.zip";
    string dirName = $"c:/users/{userName}/archive";

    Say("Starting file extraction..");

    var archiveCreator = new ArchiveCreator();
    if (archiveCreator.CreateDirIfNotExists(dirName)) {
        archiveCreator.CreateArchive(startDir, zipFile);
    }

    Say("Press enter to exit..");
    Console.ReadLine();
}


Printing messages

This and the similar methods simply print messages:


public string Success(string input)
{
    Console.ForegroundColor = ConsoleColor.White;
    Console.WriteLine(input);
    return input;
}



As such, these have nothing to do with the logic of creating archives,
so these methods would be better in another class.
Or, you could keep them within this class, but make them static.

Also, I don't see a point in return input,
it would be better to make these methods void.

Error handling

Consider this piece:


try
{
    ZipFile.CreateFromDirectory(startDir, zipDir);
}
catch (Exception e)
{
    info.Warn($"Error: {e}");
}
info.Success($"Extracted files successfully to: {zipDir}");



If an exception occurs in the try block,
the program prints a warning,
but it also prints "Extracted files successfully",
which is just not true.
Probably you want to move that line inside the try block.

Also, the program doesn't check that the directory could be created. It should.

Naming

Symbols in a program should have good names,
to make it easier for readers to understand the program and how the different elements work together.
For example, stringChars, Program, info don't describe well what they are:


var stringChars = new char[8];

Program info = new Program();



I recommend renaming them, for example:


stringChars -> filename or randomFilename
Program -> ArchiveCreator
info -> archiveCreator