Configuração Inicial do Projeto
Após criar um novo projeto no Setup Factory, arraste todos os arquivos do seu aplicativo para a janela do projeto.
Defina as variáveis de sessão necessárias, personalize a aparência do instalador (fundo, ícones) e configure as propriedades do sistema.
Clique com o botão direito no executável principal e configure o diretório de instalação padrão, atalhos no menu Iniciar e ícone do aplicativo.
Verificação e Instalação do LocalDB
Na etapa de pós-instalação, adicione um script para verificar se o SQL Server LocalDB já está instalado. Se não estiver presente, execute o instalador correspondente.
if (not localdbInstalled) then -- Executa o instalador do LocalDB local localdbInstallerPath = SessionVar.Expand("%AppFolder%\DBSetup\SqlLocalDB_2016_en.msi"); Shell.Execute(localdbInstallerPath, "open", "", "", SW_SHOWNORMAL, true); end
-- Inicia o aplicativo principal local appExePath = SessionVar.Expand("%AppFolder%\GTRAsenwarePanel.exe"); Shell.Execute(appExePath, "open", "", "%AppFolder%", SW_SHOWNORMAL, false);
</div>Configurando a Dependência do .NET Framework 4.6.1
--------------------------------------------------
Utilize o módulo de dependência do .NET 4 existente no Setup Factory como base para a versão 4.6.1.
### 1. Informações do Módulo
Altere o nome e a descrição do módulo para refletir a versão 4.6.1. A descrição deve mencionar que o instalador do .NET Framework Redistributable 4.6.1 (NDP461-KB3102436-x86-x64-AllOS-ENU.exe) será incluído e instalado automaticamente se necessário.
### 2. Função de Detecção (verificarDotNetInstalado)
Implemente uma função que consulta o registro para verificar se a versão mínima do .NET 4.6.1 (4.6.01055) já está instalada.
<div>```
function verificarDotNetInstalado()
local dotNetRegPath = "SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full";
local dotNetRegistryExists = Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, dotNetRegPath);
if (not dotNetRegistryExists) then
SetupData.WriteToLogFile("Info\tMódulo .NET: Chave do .NET 4 não encontrada. Instalação necessária.\r\n", true);
return false;
else
local installSuccess = Registry.GetValue(HKEY_LOCAL_MACHINE, dotNetRegPath, "Install", true);
if (installSuccess == "1") then
local installedVersion = Registry.GetValue(HKEY_LOCAL_MACHINE, dotNetRegPath, "Version", true);
local comparison = String.CompareFileVersions(installedVersion, "4.6.01055");
if (comparison >= 0) then
SetupData.WriteToLogFile("Info\tMódulo .NET: .NET Framework 4.6.1 ou superior já instalado.\r\n", true);
return true;
else
SetupData.WriteToLogFile("Info\tMódulo .NET: Versão inferior do .NET 4.6.1 encontrada.\r\n", true);
return false;
end
else
SetupData.WriteToLogFile("Info\tMódulo .NET: Instalação do .NET 4 não bem-sucedida ou não encontrada.\r\n", true);
return false;
end
end
return false;
end
Este script principal verifica o sistema operacional, os pré-requisitos (como o Internet Explorer 6.0 SP1 e permissões de administrador) e, se necessário, instala o .NET Framework 4.6.1. Ele também lida com erros e reinicializações do sistema.
if (not verificarDotNetInstalado()) then -- Variáveis de controle e mensagens traduzidas para o português local msgInstalacao = "O instalador detectou que os arquivos de tempo de execução do .NET estão desatualizados.\nClique em OK para instalar ou Cancelar para abortar."; local tituloDialogo = "Tecnologia Necessária"; local mostrarPrompt = true; local executarInstalacao = true; local requisitosAtendidos = true; local listaErros = {}; local caminhoInstalador = SessionVar.Expand("%TempLaunchFolder%\dotnet461\NDP461-KB3102436-x86-x64-AllOS-ENU.exe"); local precisaReinicializar = false;
SetupData.WriteToLogFile("Success\tMódulo .NET: Script de instalação iniciado.\r\n", true);
-- Verificação de pré-requisitos
-- Verifica versão do IE, permissão de administrador, versão do MSI e sistema operacional.
-- As verificações são semelhantes ao código original, mas reorganizadas e com nomes em português.
if (mostrarPrompt) then
local resultadoDialogo = Dialog.Message(tituloDialogo, msgInstalacao, MB_OKCANCEL, MB_ICONEXCLAMATION);
executarInstalacao = (resultadoDialogo == IDOK);
end
if (requisitosAtendidos and executarInstalacao) then
local argumentos = "/norestart ";
-- Inicia o instalador do .NET e trata o resultado
local resultadoInstalacao = File.Run(caminhoInstalador, argumentos, "", SW_SHOWNORMAL, true);
if (resultadoInstalacao == 3010 or resultadoInstalacao == 1614) then
precisaReinicializar = true;
elseif (resultadoInstalacao ~= 0) then
-- Tratamento de erros específicos (1602, 1603, 5100, etc.)
local msgErro = "Ocorreu um erro durante a instalação do .NET. Deseja continuar?";
local erroDialogo = Dialog.Message("Erro na Instalação", msgErro, MB_OKCANCEL, MB_ICONEXCLAMATION);
if (erroDialogo == IDOK) then
Application.Exit(EXIT_REASON_USER_ABORTED);
end
end
-- Limpeza de arquivos temporários
File.Delete(caminhoInstalador);
elseif (not requisitosAtendidos) then
-- Notifica o usuário sobre os requisitos não atendidos e pergunta se deseja abortar
local msgRequisitos = "Os seguintes requisitos não foram atendidos:\n- " .. Table.Concat(listaErros, "\n- ");
Dialog.Message("Aviso", msgRequisitos, MB_OK, MB_ICONINFORMATION);
Application.Exit(EXIT_REASON_USER_ABORTED);
end
if (precisaReinicializar) then
local msgReinicializacao = "Uma reinicialização é necessária. Reinicie e execute o instalador novamente.";
local reiniciarAgora = Dialog.Message("Reinicialização Necessária", msgReinicializacao, MB_OKCANCEL, MB_ICONINFORMATION);
if (reiniciarAgora == IDOK) then
System.Reboot();
else
Application.Exit(EXIT_REASON_USER_ABORTED);
end
end
end
</div>### 4. Localização dos Pacotes de Dependência
Coloque o instalador do .NET Framework 4.6.1 (NDP461-KB3102436-x86-x64-AllOS-ENU.exe) em um subdiretório dentro da pasta "Dependencies" do diretório de instalação do Setup Factory, ou em um caminho de sua preferência, e configure o caminho no script.
Após configurar todos os itens, gere o instalador e realize testes em um sistema limpo para validar todo o processo.