Pergunta

Existe uma API conseguiu recuperar um aplicativo de instalar data usando o GUID do produto?

Graças. Scott

Foi útil?

Solução

A forma "adequada" para chegar a essas informações é usar :: MsiGetProductInfo (). PInvoke deve ser trivial.

Outras dicas

Graças Rob! Eu adicionei um exemplo completo C # abaixo.

    [DllImport("msi.dll", CharSet = CharSet.Unicode)]
    static extern Int32 MsiGetProductInfo(string product, string property, [Out] StringBuilder valueBuf, ref Int32 len);

    static void Main(string[] args)
    {
        Int32 len = 512;
        var builder = new StringBuilder(len);
        MsiGetProductInfo("{0db93d2f-a9e7-417f-9425-5e61e82c0868}", "InstallDate", builder, ref len);

        var installDate = DateTime.ParseExact(builder.ToString(), "yyyyMMdd", CultureInfo.InvariantCulture);

        Console.WriteLine(installDate);
    }

Eu não sei sobre qualquer API que vai fazer isso, mas você pode tentar ler o valor do Registro diretamente. Verifique a seguinte chave:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{product-id}
    InstallDate = 20081004

As informações armazenadas na chave Uninstall é exibido por exemplo no Painel de Controle -> Adicionar ou Remover Programas.

A chave InstallDate no Registro não está sempre lá, especialmente quando o programa não foi instalado com através MSI (como, por exemplo, Adobe Flash Player Plugin, DAEMON Tools, 7-ZIP, Picasa, TeamViewer, Mozilla Firefox ).

Outra forma "adequada" é obter a data de criação de algum arquivo que você sabe para "certeza" é adicionado pelo instalador. No meu caso é "unins000.exe" que é (re) criado por Inno v5 configuração. Sem PInvoke envolvido, mas simplesmente usar FileInfo do Exists e propriedades CreationTime!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top