Instância nomeada do SQL Server com o projeto do Visual Studio 2017 Installer

Programas:

SQL Server Express 2016Visual Studio 2017

Tentamos, sem sucesso, instalar uma instância nomeada do SQL Server Express 2016 como parte do projeto de instalação do VS Installer.

Tentamos ligarInstallNamedInstance() da seguinte maneira com os resultados fornecidos:

CorreSQLEXPR_x64_ENU.exe com os mesmos argumentos da linha de comando na janela cmd do administrador:LigarInstallNamedInstance() de um aplicativo de console e execute o aplicativo de console na janela cmd do administrador:Instalar ação personalizada (Todos e Apenas eu): falhaEvento BeforeInstall (Everyone e Just Me): falha

Percebo que o usuário atual quando o msi é executado éNT AUTHORITY\SYSTEM. Sempre que falha no projeto Installer, falha com a mensagem abaixo:

A conta que está executando a Instalação do SQL Server não possui um ou todos os seguintes direitos: o direito de fazer backup de arquivos e diretórios, o direito de gerenciar a auditoria e o log de segurança e o direito de depurar programas. Para continuar, use uma conta com esses dois direitos. Para mais informações, vejahttp://msdn.microsoft.com/en-us/library/ms813696.aspx, http://msdn.microsoft.com/en-us/library/ms813959.aspx ehttp://msdn.microsoft.com/en-us/library/ms813847.aspx.

Isso é uma limitação do projeto Installer ou estou faltando alguma coisa? Teremos mais sorte com o AdvancedInstaller?

Observe que o pré-requisito do Projeto Instalador não está funcionando para nós porque estamos tendo que criar uma instância nomeada do SQL Server Express e não podemos ver como podemos passar argumentos da linha de comando para o pré-requisito.

private void InstallNamedInstance()
{
    // NOTE: Change below instance name to get unique instances (or uninstall previous instance)
    var InstanceName = "TFPICDATABASES2";
    var proc = new Process();
    // NOTE:
    //  1. Download "SQLServer2016-SSEI-Expr.exe" web installer from https://www.microsoft.com/en-us/download/details.aspx?id=54284
    //  2. Run the web installer and choose 3rd option "Download Media". This will give "SQLEXPR_x64_ENU.exe"
    proc.StartInfo.FileName = @"c:\temp\sql\SQLEXPR_x64_ENU.exe ";
    proc.StartInfo.Arguments = " /Action=Install";
    proc.StartInfo.Arguments += $" /INSTANCEID={InstanceName}";
    proc.StartInfo.Arguments += $" /InstanceName={InstanceName}";
    proc.StartInfo.Arguments += " /ROLE=AllFeatures_WithDefaults";
    proc.StartInfo.Arguments += " /QS";
    proc.StartInfo.Arguments += " /INDICATEPROGRESS=True";
    proc.StartInfo.Arguments += " /IAcceptSQLServerLicenseTerms=True";
    proc.StartInfo.WorkingDirectory = @"c:\temp\sql";

    WriteLog($"FielName: {proc.StartInfo.FileName}; Arguments: {proc.StartInfo.Arguments}; WorkingDir: {proc.StartInfo.WorkingDirectory}");

    proc.StartInfo.UseShellExecute = false;
    proc.OutputDataReceived += (s, e) => WriteLog($"Info: {e.Data}");
    proc.ErrorDataReceived += (s, e) => WriteLog($"Error: {e.Data}");

    var ok = proc.Start();
    // NOTE: Log files are in C:\Program Files\Microsoft SQL Server\130\Setup Bootstrap\Log
    // Summary.txt gives log of latest installer run. It also creates one folder for each installer attempt
    // and gathers more detailed logs in those folders.
    proc.WaitForExit();
    WriteLog($"{proc.StartInfo.FileName} exited with {proc.ExitCode}");
    if (proc.ExitCode != 0)
    {
        throw new Exception($"SQL Server Express installation failed. Check log file for more details");
    }
}

questionAnswers(2)

yourAnswerToTheQuestion