如何检查 NSIS 中分号分隔的注册表值中是否存在特定字符串,如果不存在则追加它?

问题描述 投票:0回答:1

我使用 NSIS 从注册表中检索了一个字符串,其中包含多个分号作为分隔符,例如:ABC;123;XYZ。我想检查该字符串中是否存在特定的子字符串(例如“123”)。如果它确实存在,我不想执行任何操作。但是,如果子字符串不存在(例如,如果我检查“qwe”),我需要将其附加到原始字符串的末尾,然后将更新后的值写回注册表。

这是一个明显的例子:

原始注册表值:ABC;123;XYZ 特定字符串:“123”→ 无需执行任何操作。 特定字符串:“qwe”→将值更新为 ABC;123;XYZ;qwe。

nsis
1个回答
0
投票

如果您想更新

%PATH%
环境变量,您必须使用EnVar插件

否则,你必须自己做一些工作:

!include WordFunc.nsh
!include LogicLib.nsh
Var Find

Section

StrCpy $1 "ABC;123;XYZ" ; ReadRegStr ...

StrCpy $Find "123"
${WordFind} $1 ";" "/$Find" $0
${If} $0 = $1
    DetailPrint '$Find not found in $1'
${Else}
    DetailPrint '$Find is string #$0 in $1'
${EndIf}

StrCpy $Find "qwe"
${WordFind} $1 ";" "/$Find" $0
${If} $0 = $1
    DetailPrint '$Find not found in $1'
    ${WordAdd} $1 ";" "+$Find" $1
    DetailPrint 'WriteRegStr ... $1'
${Else}
    DetailPrint '$Find is string #$0 in $1'
${EndIf}

SectionEnd
© www.soinside.com 2019 - 2024. All rights reserved.