Ir ao conteúdo

Codigo para chamar arquivo .msi e .txt


Beliel

Posts recomendados

Postado

Boa tarde pessoal, sou novato no forum e estou com uma duvida...

Estou criando um menu para chamar instalaçoes de programas, quando o programa é com extençao .exe eu utilizo o comando winexec e passo o caminho onde ele se encontra, porém preciso chamar um programa com extençao .msi e .txt, tem algum comando expecifico para isso?

Outra duvida tbem é a seguinte, esse menu vou colocar num cd junto com os programas, então um exemplo do comando que darei é o seguinte:

Para chamar a instalação do office

winexec('D:/office.exe',sw_show);

Fiz essa linha de comando dentro de um begin trocando as unidades pro caso da unidade de cd nao seja a D:, mas meu codigo nao ficou muito bom nao, ele está rápido e funcional para achar a unidade, porém está feio, quero saber se existe uma funçao para o programa quando inicializado localize a unidade de CD que esteja o meu programa, por exemplo:

Se unidade de cd d: então

comando

senao

se unidade de cd e: então

comando

fim

aguardo alguma resposta...

Postado
Boa tarde pessoal, sou novato no forum e estou com uma duvida...

Estou criando um menu para chamar instalaçoes de programas, quando o programa é com extençao .exe eu utilizo o comando winexec e passo o caminho onde ele se encontra, porém preciso chamar um programa com extençao .msi e .txt, tem algum comando expecifico para isso?

Outra duvida tbem é a seguinte, esse menu vou colocar num cd junto com os programas, então um exemplo do comando que darei é o seguinte:

Para chamar a instalação do office

winexec('D:/office.exe',sw_show);

Fiz essa linha de comando dentro de um begin trocando as unidades pro caso da unidade de cd nao seja a D:, mas meu codigo nao ficou muito bom nao, ele está rápido e funcional para achar a unidade, porém está feio, quero saber se existe uma funçao para o programa quando inicializado localize a unidade de CD que esteja o meu programa, por exemplo:

Se unidade de cd d: então

comando

senao

se unidade de cd e: então

comando

fim

aguardo alguma resposta...

hehe, ja fiz um programa extamente deste tipo!! e tive as mesmas dúvidas!!

+ como ninguem me ajudou tive que resolver sozinho.

mas ai está a solução!!

Declare a unit ShellApi na seção uses da sua unit

esta unit contém uma função chamada ShellExecute que abre qualquer arquivo usando o programa padrão do windows

você não precisa saber qual a unidade de CD basta que os arquivos de instalação estejam no mesmo diretório do seu programa ou em subdiretórios

Ex.: X:\SeuPrograma.exe // seu programa está aqui

ao invés de usar ExecuteFile('X:\OFFICE2007\OFFICE.exe');

você usa ExecuteFile(ExtractFilePath(ParamStr(0))+'OFFICE2007\OFFICE.EXE');

sem indicar o drive

ou poderia usar ExecuteFile('OFFICE2007\OFFICE.exe') mas eu já tive problemas em usar a função desta maneira

ficaria +/- desta maneira

declarando a função....


[B]function[/B] ExecuteFile(Fn: [B]String[/B]): Integer;
[B]begin[/B]
Result := ShellExecute(
Application.Handle, [COLOR="Blue"]// Handle do aplicativo[/COLOR]
'open', [COLOR="Blue"]// Operação OPEN abre um arquivo[/COLOR]
PAnsiChar(FN), [COLOR="Blue"]// Nome do arquivo[/COLOR]
'', [COLOR="Blue"]// Parâmetros[/COLOR]
PAnsiChar(ExtractFilePath(FN)), [COLOR="Blue"]// Diretório para inicializção[/COLOR]
SW_SHOWNORMAL [COLOR="Blue"] // SW_SHOWNORMAL exibe a janela normalmente[/COLOR]
);
end;

[B]procedure[/B] TForm1.Button1Click(sender:TObject);
[B]var[/B]
ExePath: [B]String[/B];
[B]begin[/B]
ExePath := ExtractFilePath(ParamStr(0)); [COLOR="Blue"]// pega o diretório do seu programa[/COLOR]

ExecuteFile(ExePath+'OFFICE2007\OFFICE.ExE'); [COLOR="Blue"]// executa o instalador que está em $(DiretorioDoSeuPrograma)\OFFICE2007\OFFICE.EXE[/COLOR]
ExecuteFile(ExePath+'OFFICE2007\WRDINS.MSI'); [COLOR="Blue"]// faz a mesma coisa com o arquivo MSI[/COLOR]

[B]end[/B];

Experimente usar esta função para abrir outros tipos de arquivo!

ps: se esta função retornar um inteiro menor que 32 é um sinal de que ocorreu um erro ao executar o arquivo

Falou, Abraços!

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!