NSIS registry:Write 没有写入所有需要的值

NSIS registry:Write not writing all of the value needed

我有这行代码

${registry::Write} "HKEY_CLASSES_ROOT\autodocedithandler\shell\open\command" "" "$PROGRAMFILES32\AutoDocEdit\AutoDocEdit.exe $\"%1$\"" "REG_EXPAND_SZ" $R0

当我 运行 安装程序并随后检查注册表时,我发现只有 '%1' 作为值输入到注册表中 - 之前的路径没有成功。

有什么原因吗?

谢谢

我猜它不喜欢引号。

尝试

${registry::Write} "HKEY_CLASSES_ROOT\autodocedithandler\shell\open\command" "" '"$PROGRAMFILES32\AutoDocEdit\AutoDocEdit.exe" "%1"' "REG_EXPAND_SZ" $R0

写这个字符串不需要用这个插件,用WriteRegStr就可以了。没有什么可扩展的(Explorer/shell32 在内部扩展 %1)所以你不需要它是扩展字符串类型。

我最终通过使用文件夹的定义解决了这个问题

!define DefaultAutoDocEditFolder "$PROGRAMFILES32\AutoDocEdit\AutoDocEdit.exe"

以后像这样使用

${registry::Write} "HKEY_CLASSES_ROOT\autodocedithandler\shell\open\command" "" '${DefaultAutoDocEditFolder} "%1"' "REG_EXPAND_SZ" $R0

希望此解决方案对其他人有所帮助。