Мне было интересно, можно ли вывести из Windows список установленных приложений, ВКЛЮЧАЯ их идентификатор GUID и Upgrade GUID. У меня проблемы с обновлением моей работы для одной из моих программ, и мне нужно проверить эти значения для старой версии программы. Спасибо за помощь!Windows GUID или список приложений
ответ
Вы можете использовать функции api MSI для перечисления всех установленных продуктов и запроса их свойств. Если вы замените MsiGetProductInfo
на MsiGetProductInfoEx
, вы сможете запросить дополнительную информацию, такую как контекст установки или идентификатор пользователя SID, связанный для установки.
Однако это не позволяет перечислить UpgradeCode
. Насколько я знаю, MSI не ведет запись, связывающую ProductCode
с UpgradeCode
; доступно только обратное сопоставление, и вы можете перечислить продукты, связанные с UpgradeCode
, используя функцию MsiEnumRelatedProducts
.
Ниже вы найдете пример кода, в котором перечисляются установленные или рекламируемые продукты и их ProductCode
с помощью C#:
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
class Program
{
[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 (MsiEnumProducts(iIdx++, sbProductCode) == 0)
{
Int32 productNameLen = 512;
StringBuilder sbProductName = new StringBuilder(productNameLen);
MsiGetProductInfo(sbProductCode.ToString(),
"ProductName", sbProductName, ref productNameLen);
Console.WriteLine("Product: {0}\t{1}", sbProductName, sbProductCode);
}
}
}
Update
Если у вас есть установщик MSI предыдущей версии вы можете просто откройте файл с помощью Orca и найдите UpgradeCode.
- 1. Списки Windows GUID
- 2. Список приложений и путей Windows
- 3. Список известных GUID
- 4. Список кодов выхода приложений Windows
- 5. Получить список установленных приложений Windows
- 6. Что такое GUID GUID для Windows 10?
- 7. Список преобразований < Guid > в список < Guid? >
- 8. deserialize список Guid C#
- 9. Как получить список установленных универсальных приложений Windows?
- 10. Что использовать и выставлять для Auto Ids, GUID или Auto Ids + GUID для веб-приложений?
- 11. Как получить список запущенных приложений/список установленных приложений?
- 12. Windows работает список приложений с помощью Java
- 13. Создание F # PCL для универсальных приложений (например, приложений для магазинов или приложений Windows или приложений WinRT)
- 14. Получить список рассылки по GUID
- 15. Прописные или строчные буквы в идентификаторах GUID в установщике Windows
- 16. Влияние идентичного идентификатора GUID для всех приложений
- 17. Подписывать (или список) все распространенные уведомления приложений
- 18. Отключить или изменить список последних приложений
- 19. Получить список запущенных приложений MetroStyle
- 20. Как получить PIDL из GUID библиотеки Windows?
- 21. Windows 8.0 архитектуры приложений приложений
- 22. показать список установленных приложений
- 23. Это Guid случайные или угадываемы
- 24. Преобразовать байт [] или объект GUID
- 25. Как создать GUID под Windows Mobile?
- 26. Создайте GUID GUID или уникальный идентификатор из строки
- 27. Получить GUID или собственный GUID из Active Directory
- 28. Производительность - использование объекта Guid или Guid string в качестве ключа
- 29. Должен ли я использовать Guid и Guid.Empty или nullable Guid?
- 30. Первичный ключ SQL, INT или GUID или ..?
Я, конечно же, открыл MSI с Orca, и все проверено, но я просто хотел напрямую проверить Windows, чтобы увидеть, произошло ли что-то странное во время начальной установки. Коды обновления одинаковы, и обновление просто не работает. См. Http://stackoverflow.com/questions/3863171/wix3-major-upgrade-not-working – Adkins