我有一个 json 配置文件作为我的 NSIS 安装程序的一部分进行更新。我需要根据用户的选择移除一棵树。
我尝试的大部分都是让安装程序崩溃。我搜索了论坛,我有最新版本的 nsJSON 插件(1.1.1.0)
这是 JSON 文件。我正在尝试完全移除“Kestrel”树:
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"Microsoft": "Debug",
"Microsoft.Hosting.Lifetime": "Debug"
}
},
"CAD_NIEM_CONNECTION": {
"CAD_IFP_HOST": "10.1.1.1",
"CAD_IFP_PORT": 9035
},
"NATS": {
"URL": "nats://localhost:5222",
"TOPIC": "NIEM_FEED",
"CLUSTER": "project-dev"
},
"Kestrel": {
"Certificates": {
"Default": {
"Path": \\https\\WebPoint.pfx
}
}
},
"AllowedHosts": "*",
"urls": https://*:6001,
"HTTPS_PORT": "6111"
}
这是我正在尝试使用的代码:(其中带有用于调试目的的消息框,以确保崩溃发生的时间)
ClearErrors
nsJSON::Set /file `$INSTDIR\config\NIEMIngestToStream-DEFAULT.appsettings.json`
nsJSON::Set `NATS` `URL` /value `"$NATSURL"`
nsJSON::Set `NATS` `CLUSTER` /value `"$NATSCLUSTER"`
<snip>
${If} $URLPre == "https"
nsJSON::Set `HTTPS_PORT` /value `"$WEBPORT"`
nsJSON::Set `urls` /value `https://*:443`
${ElseIf} $URLPre == "http"
nsJSON::Get /tree Kestrel /exists /end
Pop $R0
MessageBox MB_OK "Found Kestrel: $R0"
nsJSON::Delete /tree "Kestrel" /end
Pop $R1
MessageBox MB_OK "Return from Delete Kestrel: $R1"
nsJSON::Set `urls` /value `http://*:80`
nsJSON::Set `HTTPS_PORT` /value `""`
${Endif}
nsJSON::Serialize /format /file `$INSTDIR\config\NIEMIngestToStream.appsettings.json`
${If} ${Errors}
Abort "Unable to update JSON file!"
${EndIf}
这会导致安装程序崩溃。我尝试过使用和不使用 /tree 参数。
想法?抱歉,我不是 JSON 专家。
我尝试过其他几篇文章中的语法。大多数人对旧版本的插件有问题,但据说这个版本修复了调用 nsJSON::delete 时的崩溃