[firebase-br] dúvida num code do inno setup

ricardo zancanaro rbzancanaro em gmail.com
Sex Jan 23 18:12:06 -03 2009


Boa tarde Cassio,

na página http://www.innosetup.com/iskb.php?msi , tem a seguinte dica
de como instalar .MSI.


[Files]
Source: "Your-MSI-File.msi"; DestDir: "{tmp}"

[Run]
Filename: "msiexec.exe"; Parameters: "/i ""{tmp}\Your-MSI-File.msi"""

Em um teste que fiz aqui, o instalador chama o .MSI e fica aguardando
o término da execução do mesmo.

Mas se quiser tentar, tem essa gambiarra aqui, ele cria uma nova
página no seu instalador chama teu .MSI e cria uma barra de progresso
só pra tapear, não testei, mas acredito que tenha como vc trocar o for
por um while e executar a barra até o final da execução do .MSI

var
	BarraProgresso: TOutputProgressWizardPage;
	PaginaProgresso : TWizardPage;

procedure criarWizard();
var
	Paginas: TWizardPage;
begin
	PaginaProgresso := CreateOutputMsgMemoPage(wpInfoAfter, 'Título Janela',
		'Descrição das ações',
		'Ações:',
		'Atividade'#13'Atividade');
	Paginas := CreateCustomPage(wpFinished, 'wpFinished', 'Descrição do
meu wizard');
end;
procedure InitializeWizard();
begin
	criarWizard();
end;

function NextButtonClick(CurPageID: Integer): Boolean;
var
	I: Integer;
	ErrorCode: Integer;
	Path: String;
begin
	if CurPageID = PaginaProgresso.ID then begin
		BarraProgresso := CreateOutputProgressPage('Iniciar Serviço','');
		BarraProgresso.SetText('Iniciando Firebird...', '');
		BarraProgresso.SetProgress(0, 0);
		BarraProgresso.Show;
		try

			Path := '"' + ExpandConstant('{tmp}\SeuArquivo.MSI"');
			ShellExec('open', Path, '', '', SW_HIDE, ewNoWait, ErrorCode);

			for I := 0 to 100 do begin
				BarraProgresso.SetProgress(I, 100);
				Sleep(100);
			end;
		finally
			BarraProgresso.Hide;
			if ErrorCode <> 0 then
				MsgBox('Erro ao executar o .MSI.', mbInformation, MB_OK);
			Result := True;
		end;
	end
    else
		Result := True;
end;

Att,
Ricardo Zancanaro




Mais detalhes sobre a lista de discussão lista