А зачем была сделана ручная сборка UnistallString для прогрумм установленных Windows Installer? Для того что бы обойти проблему с удалением программ у которыъ нет UninstallString? Если да то тогда ручками собирать команду нужно только в том случае, если UnistallString пустой, так как в общем случае в UnistallString может быть не только MsiExec.exe /X{GUID}, но и что то более навороченное.
Например (
Debugging Tools for Windows (x86)), для многих программ в UnistallString пишется не прямое удаление, а advertise:
Code: Select all
MsiExec.exe /I{1CD0C3C5-809D-4CFC-904A-1B67C6243637}
Или вот ещё более навороченная строка удаления (
Microsoft Expression Blend 2 Service Pack 1):
Code: Select all
msiexec -qb /package {3891E1C9-8E9E-43E2-B009-6D008BCD7669} /uninstall {1B64B3D0-D0DB-4d99-B38D-B0D632A1780A}