Это отличная информация. Спасибо. Мы рассмотрим это.
аммное обеспечение:
SQL Server Express 2016Visual Studio 2017Мы безуспешно пытались установить именованный экземпляр SQL Server Express 2016 в рамках проекта установки VS Installer.
Мы пробовали звонитьInstallNamedInstance()
следующим образом с данными результатами:
SQLEXPR_x64_ENU.exe
с теми же аргументами командной строки из окна cmd администратора: УспешноВызовInstallNamedInstance()
из консольного приложения и запустите консольное приложение из окна cmd администратора: УспешноУстановить пользовательское действие («Все и только я»): не работаетСобытие BeforeInstall (для всех и только для меня): сбойЯ заметил, что текущий пользователь при запуске MSINT AUTHORITY\SYSTEM
, Всякий раз, когда происходит сбой в проекте установщика, происходит сбой с сообщением ниже
Учетная запись, на которой выполняется программа установки SQL Server, не имеет одного или всех из следующих прав: право на резервное копирование файлов и каталогов, право на управление аудитом и журнал безопасности, а также право на отладку программ. Чтобы продолжить, используйте учетную запись с обоими этими правами. Для получения дополнительной информации см.http://msdn.microsoft.com/en-us/library/ms813696.aspx, http://msdn.microsoft.com/en-us/library/ms813959.aspx а такжеhttp://msdn.microsoft.com/en-us/library/ms813847.aspx.
Это ограничение проекта Installer или я что-то упустил? Нам повезет больше с AdvancedInstaller?
Обратите внимание, что предварительное условие для Installer Project не работает для нас, потому что нам нужно создать именованный экземпляр SQL Server Express, и мы не можем увидеть, как мы можем передать аргументы командной строки в предварительные условия.
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");
}
}