2016-04-18 7 views
-1

Мне нужно получить номер продукта моего проекта установки, который я использовал InstalledShield для создания .exe.Прочитать номер продукта из проекта установки Windows

Я прочитал около MsiGetProductInfo() в API установщика, но не смог найти их для применения в примере кода C#.

Спасибо.

ответ

1

Вы имеете в виду MsiGetProductInfo, поэтому я предполагаю, что у вас есть файл MSI для Windows Installer, который устанавливается exe (потому что он загружает предварительные условия) и что вы хотите получить информацию после установки вашей установки.

Это п/ссылаться на подпись:

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

и в основном продукта ProductCode от MSI Guid в виде строки в окружении {} скобки.

Вы не разместили ни одного кода, который вы, возможно, попробовали, поэтому невозможно диагностировать все проблемы, которые могут возникнуть у вас. Если под «номером продукта» вы имеете в виду версию, то вы используете какой-либо из значений документированных здесь:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa370130(v=vs.85).aspx

, где такие вещи, как INSTALLPROPERTY_VERSIONSTRING определены в msi.h из SDK Windows, значение является «VersionString ».

Там должно быть более чем достаточно информации, в этом примере также:

MSI Interop using MSIEnumRelatedProducts and MSIGetProductInfo

UpgradeCode обычно остается неизменным в течение многих различных ProductCodes, как происходит обновление, так что код не изменится, если вы используете MsiEnumRelatedProducts на UpgradeCode для возврата ProductCode, а затем подключите этот ProductCode к MsiGetProductInfo.

+0

Я сделал ссылку ниже. Http: //stackoverflow.com/questions/4013425/msi-interop-using-msienumrelatedproducts-and-msigetproductinfo. Но он не возвращает ProductVersion.It возвращает имя продукта и код продукта. Любая идея? – KIS

+0

Я изменил «ProductVersion» на «VersionString». то он возвращает версию продукта. – KIS

0

MsiGetProductInfo не будет работать, поскольку установщик был создан с использованием Wix Bootstrapper. То, что вы можете сделать, и это немного взломать, - это открыть исполняемый файл с помощью любого архиватора (это архив в конце) и файл синтаксического анализа 0, это XML. Вы можете найти всю информацию там, например, версию, название продукта, ключ продукта и т. Д.

+0

Мне нужно сделать этот код позади. Могу ли я сделать это в вашем подходе? Спасибо. – KIS

+0

Да, есть API-интерфейсы архивирования, просто выберите тот, который вам проще –