在NSIS中导入registry项时出错【JAVA教程】

!
也想出现在这里? 联系我们
信息

在NSIS中导入registry项时出错,第1张

概述在NSIS中导入registry项时出错

我正在通过NSIS安装程序为我的应用程序打包。 在包装我需要为我的应用程序做一些registry项。 这些条目将位于registrypath“HKLM SOFTWARE Wow6432Node Microsoft”和“HKLM SOFTWARE Microsoft”中。

问题是当我通过NSIS中的[ExecWait“regedit.exe / s registry.reg”]命令导入registry时,registry项不会被添加到path“HKLM SOFTWARE Microsoft”,只能在其他条目将被添加。 并且在NSIS安装程序中,在“HKLM SOFTWARE Wow6432Node Wow6432Node Microsoft”这个path中会有一个新的条目,因为我没有在registry文件中包含任何类似的registry项。

我检查了registry文件,没有问题。 我试图通过直接运行registry文件,也试图直接在bat文件以及CMD(regedit.exe / s registry.reg)相同的命令。 所有工作正常。 只有在NSIS它不工作。 任何帮助将是伟大的。

编辑 : *** 作系统:windows 7,64位

NSISasynchronous文件下载和自定义进度条

简单的NSIS配方基本安装

如何用相对目标创build快捷方式(.lnk)?

创build一个空目录(NSIS)

“新安装的程序”如何工作?

NSIS版本:2.46

CACLS混乱

在linux上签名NSIS安装程序

如何安装AccessControl NSIS插件? 并授予完全访问子文件夹?

我怎么能从cygwin ssh运行一个win32 gui程序?

你如何在NSIS中设置目录权限?

我猜你的应用程序安装程序是32位的。 由于它是一个32位安装程序,每个注册表 *** 作都会通过应用兼容性关键字“Wow6432Node”的窗口自动转换。 看到这个关于注册表重定向的链接

用于在32位和64位注册表之间进行切换,您的代码应如下所示:

SetRegVIEw 64 WriteRegDWORD HKLM \”SOFTWARE<Key1><Key2>\” \”Value\” 0 SetRegVIEw 32 WriteRegStr HKLM \”SOFTWARE<Key1><Key2>\” \”Value\” \”1\”

因为nsis有自己的本地函数来修改windows注册表,使用ExecWait regedit.exe /s registry.reg不是一个好主意

从32位应用程序调用Exec \”regedit.exe\”将启动32位Regedit,并导致Wow6432Node Wow6432Node问题。

真正的解决方案是使用Reg2Nsis或其他转换工具将您的.reg文件转换为WriteRegStr和SetRegVIEw指令。

你可以尝试用这个丑陋的黑客来运行64位的Regedit:

!include x64.nsh ${disableX64FSRedirection} ExecWait \’\”$WinDirRegedit.exe\” /whatever\’ ${EnableX64FSRedirection}

总结

以上是内存溢出为你收集整理的在NSIS中导入registry项时出错全部内容,希望文章能够帮你解决在NSIS中导入registry项时出错所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞99 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容