I am using below code to get installed date of my windows application. My application was installed using installer and it's listed in control panel as well. However, below code doesn't get me my application details. Any ideas?
[DllImport("msi.dll", CharSet = CharSet.Unicode)]
static extern Int32 MsiGetProductInfo(string product, string property,
[Out] StringBuilder valueBuf, ref Int32 len);
[DllImport("msi.dll", SetLastError = true)]
static extern int MsiEnumProducts(int iProductIndex,
StringBuilder lpProductBuf);
static void Main(string[] args)
{
StringBuilder sbProductCode = new StringBuilder(39);
int iIdx = 0;
while (
0 == MsiEnumProducts(iIdx++, sbProductCode))
{
Int32 productNameLen = 512;
StringBuilder sbProductName = new StringBuilder(productNameLen);
MsiGetProductInfo(sbProductCode.ToString(),
"ProductName", sbProductName, ref productNameLen);
if (sbProductName.ToString().Contains("MyApplication"))
{
Int32 installDirLen = 1024;
StringBuilder sbInstallDir = new StringBuilder(installDirLen);
MsiGetProductInfo(sbProductCode.ToString(),
"InstallLocation", sbInstallDir, ref installDirLen);
if (sbInstallDir.ToString() != "")
{
Console.WriteLine("ProductName {0}: {1}",
sbProductName, GetCreationDateOfFolder(sbInstallDir.ToString()).ToString());
}
}
}
}
private static DateTime GetCreationDateOfFolder(string Path)
{
string directoryString = Path;
Directory.CreateDirectory(directoryString);
DateTime dateTime = Directory.GetCreationTime(directoryString);
return dateTime;
}