Как я могу найти папку для установки после завершения установки? - PullRequest
2 голосов
/ 30 ноября 2011

Я пытаюсь написать установщик расширений, но мне нужно найти INSTALLDIR необходимого приложения.Обязательное приложение устанавливается вместе с MSI.Установщик расширения использует Inno Setup.

Любые подсказки, откуда я могу получить эту информацию?

Я посмотрел в реестре удаления Windows, но значение InstallLocation пусто.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{MY-PRODUCTID-GUID-HERE}]
"Comments"=""
"Contact"=""
"DisplayVersion"="1.0.0"
"HelpLink"=""
"HelpTelephone"=""
"InstallDate"="20111021"
"InstallLocation"=""
"InstallSource"="D:\\Documents\\Downloads\\"
"URLUpdateInfo"=""
"VersionMajor"=dword:00000001
"VersionMinor"=dword:00000000
"WindowsInstaller"=dword:00000001
"Version"=dword:01000000
"Language"=dword:00000409
"DisplayName"="MyApp (64-bit)"

Ответы [ 4 ]

2 голосов
/ 01 декабря 2011

MSI не ограничивает пакет наличием единого каталога установки, поэтому нет возможности запросить его.Если вы хотите предложить такую ​​расширяемость, выберите каталог и запишите его в реестр, чтобы другие могли сделать запрос.

2 голосов
/ 30 ноября 2011

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

Я использую NSIS. Итак, в этих терминах это выглядит примерно так:

    Function .onInit

  Pop $R1 ; "c:\\Program Files\ etc...."

  # Check if it is installed
  StrCmp $R1
    MessageBox MB_OK|MB_ICONSTOP $(NotInstalled)
    Abort

  # It is installed so set INSTDIR
  StrCpy $INSTDIR "$R1"

FunctionEnd
0 голосов
/ 01 декабря 2011

Для установки приложений не требуется записывать InstallLocation в Uninstall раздел реестра, однако рекомендуется . Тем не менее, вы должны позаботиться об этом сами при разработке установочного пакета.

Программа могла записать это значение в свой собственный ключ в реестре, например: HKLM\Software\MyApp.

Если предварительное условие принадлежит вам, то измените установщик так, чтобы он записывал каталог, в который должны быть установлены расширения, в реестр, как предложил Боб .

0 голосов
/ 30 ноября 2011

Если его нет в этом месте, вы можете попросить авторов основного пакета узнать, где они хранят путь. Если нет, то предложение DevinBM - единственный практический путь.

...