Я уже прошел:
Проверьте, установлено ли приложение уже
Обнаружение, если программа уже установлена с NSIS
http://nsis.sourceforge.net/Add_uninstall_information_to_Add/Remove_Programs
Мои вопросы немного глубже и немного более общие.
Итак, как вы поняли, моя проблема в том, что я хочу проверить
Приложения "уже установлены на компьютере пользователя? Я создаю установщик, используя Advanced Installer .
Первые несколько вопросов:
- Что такое
Upgrade Code
? У расширенного установщика есть опция, Версия продукта (определяется по коду обновления)
- Что такое
Product Code
? Расширенный установщик Версия продукта (определяется по коду продукта)
- Компонент установлен:
GUID
. Что такое GUID?
Все три вышеперечисленных имеют такие значения:
{49EB7A6A-1CEF-4A1E-9E89-B9A4993963E3} Я не знаю, что это за значения, но кажется, что компьютер распознает программное обеспечение с использованием такого странного идентификатора.
Мои обязательные заявки
- СУБД MySQL
- MySQL .NET Connector
Один факт, который я обнаружил, - это код обновления и код продукта, который можно извлечь из его "установщика msi". Итак, я извлек эти значения из установщиков и реестра.
MySQL Server
Installer = mysql-5.1.43-win32.msi
Upgrade Code = {49EB7A6A-1CEF-4A1E-9E89-B9A4993963E3}
Product Code = {0ECED7D8-FF53-4DC9-958E-C2177F528DE4}
GUID (for component Installed) = ????
Uninstall Path = HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{0ECED7D8-FF53-4DC9-958E-C2177F528DE4}
Installer = mysql-5.1.46-win32.msi
Upgrade Code = {49EB7A6A-1CEF-4A1E-9E89-B9A4993963E3}
Product Code = {EA8FDE5A-2B33-4EDD-B7E7-8D179DF731A5}
GUID (for component Installed) = ????
Uninstall Path = HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{EA8FDE5A-2B33-4EDD-B7E7-8D179DF731A5}
Installer = mysql-essential-5.1.46-win32.msi
Upgrade Code = {49EB7A6A-1CEF-4A1E-9E89-B9A4993963E3}
Product Code = {AD33AF2C-6485-4106-B012-1D9CDC88A454}
GUID (for component Installed) = ????
Uninstall Path = HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AD33AF2C-6485-4106-B012-1D9CDC88A454}
Installer = mysql-essential-5.0.89-win32.msi
Upgrade Code = {49EB7A6A-1CEF-4A1E-9E89-B9A4993963E3}
Product Code = {9A4DA7EF-A7B9-4282-90AD-10976AA24E69}
GUID (for component Installed) = ????
Uninstall Path = HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{9A4DA7EF-A7B9-4282-90AD-10976AA24E69}
Данные наблюдения сверху:
UpgradeCode
программного обеспечения постоянно и независимо от его версии. Но на удивление в реестре нет ни одной записи со значением UpgradeCode
ProductCode
зависит от версии и используется MSI для внутреннего использования, что на самом деле разумно. MSI позволяет устанавливать приложения разных версий одновременно.
- Я не знаю, как найти GUID.
MySQL ADO .NET Driver
Installer = mysql.data.5.2.5.msi
Upgrade Code = ---
Product Code = {5FD88490-011C-4DF1-B886-F298D955171B}
GUID (for component Installed) = ????
Installer = mysql.data.6.2.2.msi
Upgrade Code = ---
Product Code = {5FD88490-011C-4DF1-B886-F298D955171B}
GUID (for component Installed) = ????
UninstallPath =HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{5FD88490-011C-4DF1-B886-F298D955171B}
Installer = mysql.data.6.2.3.msi
Upgrade Code = ---
Product Code = {5FD88490-011C-4DF1-B886-F298D955171B}
GUID (for component Installed) = ????
Наблюдения сверху по данным:
- на удивление, он не смог найти UpgradeCode из установщика mysql.data. *. Msi. Интересно, почему? Это противоречит моему вышеизложенному.
ProductCode
для всех разных версий здесь одинаково. Это опять противоречит моим наблюдениям.
- Я до сих пор не знаю, как найти GUID.
Теперь
- Что именно это
ProductCode
& UpgradeCode
& GUID
.
- Что обозначает что?
- Почему вышеприведенные наблюдения противоречат?
- Мне нет дела до версий. Я не хочу зависеть от имени приложения , тогда как мне проверить, есть ли драйвер MySQL и MySQL ADO .NET.
- Обнаружение становится простым, если они являются сборками .NET? Как это сделать тогда? Я не хочу отправлять сборки с моими развернутыми файлами.