Nsis win 7-64位中的Skinnedbutton插件问题

Nsis win 7-64位中的Skinnedbutton插件问题,nsis,skinning,Nsis,Skinning,我正在使用Slappy的SkinnedButton-v1.2.zip(23 KB)-v1.2为我的安装程序按钮蒙皮 它在任何地方都可以正常工作,除了在64位Windows 7上,按钮没有显示图像,也没有像“后退,下一步,取消”这样的文本,它只显示白色按钮 不会出现皮肤按钮错误,但是按钮已启用,可以单击 知道这个问题的原因吗?有两个可能的错误: 1) 安装程序的初始化函数称为.onInit(您的是.onint) 这意味着$PLUGINSDIR永远不会初始化,也不会提取文件 2) 您的函数myGui

我正在使用Slappy的SkinnedButton-v1.2.zip(23 KB)-v1.2为我的安装程序按钮蒙皮

它在任何地方都可以正常工作,除了在64位Windows 7上,按钮没有显示图像,也没有像“后退,下一步,取消”这样的文本,它只显示白色按钮

不会出现皮肤按钮错误,但是按钮已启用,可以单击


知道这个问题的原因吗?

有两个可能的错误:

1) 安装程序的初始化函数称为.onInit(您的是.onint)

这意味着$PLUGINSDIR永远不会初始化,也不会提取文件

2) 您的函数myGuiInit未被调用/初始化

您应该为此函数定义符号MUI\u CUSTOMFUNCTION\u GUIINIT,例如:

!define MUI_CUSTOMFUNCTION_GUIINIT "myGuiInit"

最好在脚本开头的某个地方定义它,靠近其他MUI_uu内容。

可能有两个错误:

1) 安装程序的初始化函数称为.onInit(您的是.onint)

这意味着$PLUGINSDIR永远不会初始化,也不会提取文件

2) 您的函数myGuiInit未被调用/初始化

您应该为此函数定义符号MUI\u CUSTOMFUNCTION\u GUIINIT,例如:

!define MUI_CUSTOMFUNCTION_GUIINIT "myGuiInit"

最好在脚本开头的某个地方定义它,靠近其他MUI_uu东西。

我在调试模式下运行插件,发现它有问题

SetWindowLong() and GetWindowLong()
功能

也许使用SetWindowLongPtr和GetWindowLongPtr可以解决这个问题。 它们获取/返回一个根据编译器设置的长_PTR变量。x86上的长度为32位,x64上的长度为64位

因此,必须修复和重建插件以支持x64机器。但是,因为这个插件已经过时了(目前我没有时间开发新版本),所以请尝试我的另一个工具/插件,名为图形安装程序


我开发了这个解决方案,可以让NSIS安装人员快速皮肤,我希望您会喜欢它(很抱歉自我推广)。

我在调试模式下运行插件,发现它有问题

SetWindowLong() and GetWindowLong()
功能

也许使用SetWindowLongPtr和GetWindowLongPtr可以解决这个问题。 它们获取/返回一个根据编译器设置的长_PTR变量。x86上的长度为32位,x64上的长度为64位

因此,必须修复和重建插件以支持x64机器。但是,因为这个插件已经过时了(目前我没有时间开发新版本),所以请尝试我的另一个工具/插件,名为图形安装程序


我已经开发了此解决方案,用于快速skin NSIS安装程序,我希望您会喜欢它(很抱歉自我宣传)。

问题已通过使用中的修补SkindControl插件解决。

问题已通过使用中的修补SkindControl插件解决。

这很奇怪,您可以发布您的脚本吗?我实际上在Win7 x64上测试了这个(my:)插件,没有问题。很抱歉,由于公司项目的隐私问题,我无法共享整个脚本,但我可以告诉你我在做什么。这很奇怪,你能发布你的脚本吗?事实上,我在Win7 x64上测试了这个(my:)插件,没有问题。很抱歉,由于公司项目的隐私问题,我无法共享整个脚本,但我可以告诉你我在做什么。哦,这些只是打字错误。我正在分享一个演示脚本,它也在使用你的skinnedbutton插件,也不能与Win7 64位一起使用。哦,这些都是打字错误。我正在共享一个演示脚本,该脚本也在使用您的skinnedbutton插件,而且也不能使用Win 7 64位。问题是,我的脚本中甚至没有使用SetWindowLong()和GetWindowLong(),因此问题可能是其他原因。而且它在windows 8-64位中也不起作用。如果你的图形安装程序是免费的,我很乐意使用它否则我负担不起。很抱歉,问题是我的脚本中甚至没有使用SetWindowLong()和GetWindowLong(),所以问题可能是别的。而且它在windows 8-64位中也不起作用。如果你的图形安装程序是免费的,我很乐意使用它否则我负担不起。很抱歉