NSIS已安装产品

NSIS已安装产品,nsis,Nsis,我创建的nsis设置有一些问题。我需要检查产品是否已安装,然后获取已安装产品的路径。这是因为我想构建一个“功能设置”,将一些其他组件安装到以前安装的文件夹中。有人知道如何构建这个安装程序吗?如果功能安装程序将启动安装并检查已安装产品的路径,那将是非常棒的。检查完成后,路径应位于“选择安装位置”下的“目标文件夹”中(只读) 谢谢你的帮助 BubaNSIS本身不会在任何地方编写任何内容,因此除非您自己在\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninst

我创建的nsis设置有一些问题。我需要检查产品是否已安装,然后获取已安装产品的路径。这是因为我想构建一个“功能设置”,将一些其他组件安装到以前安装的文件夹中。有人知道如何构建这个安装程序吗?如果功能安装程序将启动安装并检查已安装产品的路径,那将是非常棒的。检查完成后,路径应位于“选择安装位置”下的“目标文件夹”中(只读)

谢谢你的帮助

Buba

NSIS本身不会在任何地方编写任何内容,因此除非您自己在
\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

NSIS本身不会在任何地方编写任何内容,因此除非您自己向
\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