NSIS已经安装了产品

时间:2010-04-21 14:48:40

标签: nsis

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

感谢您的帮助 布巴

1 个答案:

答案 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