Search code examples
c#installshield

Silent installation with target directory path as parameter


In my C# app I run some setup in silent mode. the thing is that I want to enable to the user to choose the target installation directory but don't know how.

This is the silent install that works fine but installing in the default directory:

void RunSilentSetup(string executableFilePath)
        {

            ProcessStartInfo startInfo = new ProcessStartInfo()
            {
                CreateNoWindow = false,
                UseShellExecute = true,
                FileName = executableFilePath,
                WindowStyle = ProcessWindowStyle.Hidden,
                Arguments = "/s /v/qn"
            };
            using (Process exeProcess = Process.Start(startInfo))
            {
                exeProcess.WaitForExit();
                int exitcode = exeProcess.ExitCode;

                if (exitcode == 0)
                {
                    Console.WriteLine("Installation was successfully completed");
                                        }
                else
                    Console.WriteLine("one or more errors occurred during the installation");
            }

        }

But I need something like:

void RunSilentSetup(string executableFilePath, string targetDir)
{
 .
 .
 .
    Arguments = "/s /v/qn"+targetDir,
 .
 .
 .
 }

Here is the setup parameters:

enter image description here


Solution

  • Change to:

    Arguments = "/s /v/qn /vINSTALLDIR=\"+targetDir+"\"",
    

    If you run it directly from cmd that would be look like:

    C:\someFolder\anotherFolder> setup /s /v/qn /vINSTALLDIR="D:\yourTargetDirectory"