我在创建的nsis设置中遇到了一些问题。我需要检查产品是否已经安装,然后获取已安装产品的路径。这是因为我想构建一个“功能设置”,将一些其他组件安装到以前安装的文件夹中。有谁知道如何构建此安装程序?如果功能设置将开始安装并检查已安装产品的路径,那将是非常棒的。检查完成后,路径应该(只读)在“选择安装位置”下的“目标文件夹”中。
感谢您的帮助 布巴
答案 0 :(得分:4)
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