Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

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


Resumo :Em essência, os estados abaixo:1) Desabilite a ação personalizada para executar o SQL Server setup.exe em seu MSI atual. 2) Crie um WiX Burn Bundle básico para iniciar o SQLServer setup.exe primeiro e, em seguida, inicie seu MSI gerado pelo projeto Visual StudioInstaller mais tarde. Ou melhor ainda, faça todo o MSI no WiX também. Ferramentas comerciais como o Instalador Avançado e Installshield são opções viáveis ​​- eles apresentam suporte para isso que está embutido (os recursos variam dependendo da versão do pré-requisito).

Gravar maquete de pacote (inspiração, mais inspiração):

Só para tentar mostrar como funciona a marcação WiX Burn:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
     xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">

  <Bundle Name="MyCoolTestApp" Version="1.0.0.0" 
          Manufacturer="Someone" UpgradeCode="PUT-GUID-HERE">

    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />

    <util:FileSearch Path="[WindowsFolder]System32\ucrtbase.dll" Variable="VCDISTINSTALLED"/>

    <Chain>

      <ExePackage SourceFile="vc_redist.x64.exe"
                  DetectCondition="VCDISTINSTALLED"
                  InstallCommand="/q /ACTION=Install"
                  RepairCommand="/q ACTION=Repair /hideconsole" />

      <MsiPackage SourceFile="ShortcutDesktop.msi" />

    </Chain>
  </Bundle>
</Wix>

Causa Técnica :Não sou especialista em Projetos de Instalador do Visual Studio - é preciso dizer - sempre. No entanto, esses projetos têm várias limitações e peculiaridades, como você descobriu. Uma das peculiaridades é que todas as ações personalizadas são executadas no modo adiado e no contexto do sistema (executando como LocalSystem) sem representação do usuário inicial. Esta é provavelmente a causa do problema visto - como você mesmo afirma.

Embora seja possível pós-processar o MSI obtido dos projetos do VS Installer, é melhor eliminar o uso de uma ação personalizada para iniciar a instalação do SQL Server. Mais detalhes abaixo. O pós-processamento envolveria a alteração do tipo de ação personalizada de 3078 para 1030 para que a representação do usuário seja habilitada - o que também significa que a ação personalizada não é executada elevada - e, portanto, só pode ser bem-sucedida se todo o MSI for iniciado elevado.

Observação :Abaixo, sugiro usar o recurso Burn do WiX (Open Source), ou uma ferramenta comercial capaz e equivalente. O recurso Burn do WiX pode ser usado com arquivos MSI criados pelo projeto Visual Studio 2017 Installer ou arquivos MSI criados por qualquer outra ferramenta (também arquivos EXE). Basta conectar o MSI gerado pelo VS2017 no WiX Bundle (ou no arquivo EXE). O WiX obviamente também pode criar arquivos MSI (é para isso que serve o framework). Links de início rápido do WiX .

Peculiaridade da tecnologia MSI :expulsar outros instaladores das ações personalizadas do MSI não é uma boa prática. Se o outro instalador for outro MSI (e não apenas um setup.exe não MSI), não será possível fazê-lo de forma confiável devido a limitações técnicas (não há dois MSI InstallExecuteSequences pode ser executado ao mesmo tempo devido a um mutex definido durante a instalação). Em outras palavras:instalações MSI simultâneas são proibidas e tecnicamente impossíveis.

Gravar :Entre no recurso Burn do WiX - o downloader / bootstrapper / sequencer ferramenta que executa instalações de pacotes em sequência a partir de seu próprio wrapper setup.exe . Ele pode instalar arquivos MSI, arquivos EXE e outros tipos de pacotes - um após o outro sem limitações técnicas como o mutex do MSI. Execução serial, não paralela.

Instalação do SQL Server :você pode iniciar o instalador do SQL Server EXE por meio de um pacote Burn e especificar os parâmetros listados como parâmetros de linha de comando, em vez de fazê-lo em código gerenciado (com os requisitos de tempo de execução que isso implica). Então você inicia seu MSI principal depois do mesmo pacote.

Curso intensivo de queimadura :há uma curva de aprendizado para Burn. É "complicado" (é código / marcação - sempre complicado), mas é muito flexível. Quero adicionar esse Instalador Avançado parece ter um bom suporte para implantação do SQL Server, mesmo que nunca tenha tido tempo de investigar adequadamente em detalhes. Installshield pode instalar arquivos EXE e arquivos MSI em sequência usando seus projetos de suíte recurso (verifique a captura de tela vinculada). Não tenho certeza do suporte geral do SQL Server.

Alguns links de amostra de gravação :
  • Bootstrapping
  • Como:Instalar o .NET Framework usando o Burn
  • Uma boa amostra do que o Burn pode fazer:https://github.com/frederiksen/Classic-WiX-Burn-Theme.
  • Minha própria marcação Burn Bundle no estilo "Hello World" (com mais links).
  • Neil Sleightholm:http://neilsleightholm.blogspot.com/2012/05/wix-burn-tipstricks.html
  • Burn permite que você escreva seu próprio aplicativo GUI de configuração (avançado):https://github.com/rtropek/Samples/tree/master/WiXSamples/CustomBurnUI (mais amostras em um nível)

Alguns links :
  • Wix Burn:como impedir que o Bootstrapper se instale
  • Exemplo do helloworld do Wix Burn
  • Lista abrangente de sinalizadores/opções de linha de comando para Burn/bootstrapper no WiX
  • Wix Burn - modelo personalizado
  • Adicionando .msts de transformação de idioma para Burn Bundle Chain? (muitos links)