NSIS уже установленный продукт - PullRequest
1 голос
/ 21 апреля 2010

У меня проблемы с созданной настройкой nsis. Мне нужно проверить, установлен ли продукт, а затем получить путь к уже установленному продукту. Это потому, что я хочу создать «Feature-Setup», которая устанавливает некоторые другие компоненты в предыдущую установленную папку. Кто-нибудь знает, как собрать этот установщик? Будет замечательно, если настройка функции начнет установку и проверит путь установленного продукта. После завершения проверки путь должен быть (только для чтения) в «Папке назначения» в разделе «Выбрать место установки».

Спасибо за любую помощь
Буба

1 Ответ

4 голосов
/ 22 апреля 2010

NSIS ничего не пишет самостоятельно, поэтому, если вы не добавили запись в <HKLM/HKCU>\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall или Software \ Yourcompany \ Yourapp самостоятельно, вам придется искать компьютер с помощью FindFirst, FindNext. (Гадкий)

Если у вас есть запись в реестре, вы можете использовать InstallDirRegKey или обычные функции реестра:

!define MyRegKey "Software\MyCompany\MyApp"

InstallDirRegKey HKLM "${MyRegKey}" InstallDir

var LockDirPage

!include LogicLib.nsh
Function .onInit
${If} ${FileExists} "$instdir\MyApp.exe"
    StrCpy $LockDirPage 1
${EndIf}
FunctionEnd

Function dirshow
${If} $LockDirPage = 1
    FindWindow $0 "#32770" "" $HWNDPARENT
    GetDlgItem $1 $0 0x3FB
    EnableWindow $1 0
    GetDlgItem $1 $0 0x3E9
    EnableWindow $1 0
${EndIf}
FunctionEnd

page directory "" dirshow
page instfiles

Section
WriteRegStr HKLM "${MyRegKey}" InstallDir $instdir ;save location
SectionEnd
...