Como criar Arquivos.ini com base nas informações pegas pelo instalador Com Inno Setup e ISTool

15/03/2017

0

como Faço para pegar uma informação digitada no instalador e criar o arquivo .ini no istool
sei que tem com mais não achei nada na que fala sobre isso, só achei o basico como Tutorial: Criando Instaladores, e essa video aulas [url:descricao=Criando Instaladores com InnoSetup – Aula 1 - 8]http://dev.rbtech.info/criando-instaladores-com-innosetup-aula-08-final/[/url]
Eduardo Silva

Eduardo Silva

Responder

Posts

27/03/2017

Eduardo Silva

Eu pesquisei mais um pouquinho (Pesquisei muito) e encontrei uma solução

na seção Code ficou Assim
[Code]
#ifdef UNICODE
  #define AW "W"
#else
  #define AW "A"
#endif

const
  ERROR_MORE_DATA = 234;

type
  TComputerNameFormat = (
    ComputerNameNetBIOS,
    ComputerNameDnsHostname,
    ComputerNameDnsDomain,
    ComputerNameDnsFullyQualified,
    ComputerNamePhysicalNetBIOS,
    ComputerNamePhysicalDnsHostname,
    ComputerNamePhysicalDnsDomain,
    ComputerNamePhysicalDnsFullyQualified,
    ComputerNameMax
  );

var
  Page: TInputQueryWizardPage;
  ComputerName: string;

function GetComputerNameEx(NameType: TComputerNameFormat; lpBuffer: string; var nSize: DWORD): BOOL;
  external 'GetComputerNameEx{#AW}@kernel32.dll stdcall';

function TryGetComputerName(Format: TComputerNameFormat; out Output: string): Boolean;
var
  BufLen: DWORD;
begin
  Result := False;
  BufLen := 0;
  if not Boolean(GetComputerNameEx(Format, '', BufLen)) and (DLLGetLastError = ERROR_MORE_DATA) then
  begin
    SetLength(Output, BufLen);
    Result := GetComputerNameEx(Format, Output, BufLen);
  end;
end;

procedure CriarPaginaServidor;
begin
  // Create the page
  Page := CreateInputQueryPage(wpSelectComponents, 'Conexão Autosad',
           'Parâmetros de conexão com o servidor de banco de dados.',
           'Informe o servidor para conexão com o banco de dados.');

  // Add items (False means it's not a password edit)
  Page.Add('Servidor:', False);

  if TryGetComputerName(ComputerNameDnsFullyQualified, ComputerName) then
    Page.Values[0] := ComputerName
  else
    // Set initial values (optional)
    Page.Values[0] := 'localhost';
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  if CurPageID = Page.ID then
  begin
	if (CurPageID = Page.ID) then
    begin
      if (Page.Values[0] = '') then
      begin
        MsgBox('O campo servidor deve ser preenchido!', mbError, MB_OK);
        Result := False;
      end else
        Result:= True;
    end;
  end else
    Result:= True;
end;

function GetValueNames(param: String): String;
begin
  Result := Page.Values[0];
end;

procedure InitializeWizard;
begin
  CriarPaginaServidor;
end;


na seção INI na parte onde Coloca o Servido ou seja o nome do Computador fica "{code:GetValueNames}/3050" e no arquivo ele ficara
Servidor/3050
No IsTool ficou assim:
[INI]
; Criação do Arquivo Config.ini
Filename: \\Config.ini; Section: AUTOSAD; Key: DriverID; String: FB; Components: Servidor
Filename: \\Config.ini; Section: AUTOSAD; Key: Database; String: \\Banco\\BD_AUTOSAD.FDB; Components: Servidor
Filename: \\Config.ini; Section: AUTOSAD; Key: user_name; String: PROSYSTEM; Components: Servidor
Filename: \\Config.ini; Section: AUTOSAD; Key: password; String: pro690625; Components: Servidor
Filename: \\Config.ini; Section: AUTOSAD; Key: Protocol; String: Local; Components: Servidor
Filename: \\Config.ini; Section: AUTOSAD; Key: Server; String: {code:GetValueNames}/3050; Components: Servidor
Filename: \\Config.ini; Section: AUTOSAD; Key: Port; String: 3050; Components: Servidor
Filename: \\Config.ini; Section: AUTOSAD; Key: SQLDialect; String: 1; Components: Servidor
Filename: \\Config.ini; Section: AUTOSAD; Key: CharacterSet; String: WIN1251; Components: Servidor
Filename: \\Config.ini; Section: AUTOSAD; Key: VendorLib; String: gds32.dll; Components: Servidor
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar