使ç¨MSIçå½æ°å¯ä»¥æ£æµè½¯ä»¶æ¯å¦å®è£
ï¼è·åå®è£
çæ¬ä¿¡æ¯çï¼åææ¯è½¯ä»¶ä¸º.msiæ件å®è£
çã
å¨ä½¿ç¨å建议å ä¸å¦ä¸å¤´æ件ååºä¾èµï¼
å¨CODEä¸æ¥ç代ç çæ´¾çå°æç代ç ç
#include <Windows.h>
#include <Msi.h>
#pragma comment(lib, "Msi.lib")
1. æ£æµè½¯ä»¶æ¯å¦å®è£
ï¼upgradeCodeç¨äºæ 示ä»ä¸ä¸ªçæ¬å级å°å¦ä¸ä¸ªçæ¬ï¼ä¸è¬å¯ä»¥ç¨äºå¤ææ¯å¦æ¯åä¸ä¸ªè½¯ä»¶ã
[cpp] view plain copy
å¨CODEä¸æ¥ç代ç çæ´¾çå°æç代ç ç
bool CheckExistSoftware(wchar_t *upgradeCode) //å¯ä»¥éè¿å·¥å
·Orcaæ¥çå®è£
å
ç¸åºçupgradeCode
{
wchar_t productCode[39];
if (ERROR_SUCCESS == MsiEnumRelatedProductsW(upgradeCode, 0, 0, productCode))
{
return true;
}
return false;
}
2. è·å软件çå®è£
è·¯å¾
å¨CODEä¸æ¥ç代ç çæ´¾çå°æç代ç ç
void GetSoftwareInstallPath(const wchar_t *upgradeCode, wchar_t *installPath, DWORD *pathLength)
{
DWORD i = 0;
UINT result;
wchar_t productCode[39];
for (i = 0; ERROR_NO_MORE_ITEMS != (result = MsiEnumRelatedProductsW(upgradeCode, 0, i, productCode)); i++)
{
if (ERROR_SUCCESS == result)
{
if (ERROR_SUCCESS == MsiGetProductInfoW(productCode, INSTALLPROPERTY_INSTALLLOCATION, installPath, pathLength))
{
return;
}
}
}
wcscpy_s(installPath, 2, L"");
}
温馨提示:答案为网友推荐,仅供参考