NSIS DELETE命令不起作用

时间:2012-08-24 06:10:01

标签: windows installer nsis

我正在应用程序旁边部署gstreamer winbuilds。主要问题是gstreamer winbuilds安装被破坏了。 python绑定不起作用,每当你用烦人的弹出窗口初始化gstreamer时就会抱怨它。所以,我发现我可以从lib文件夹中删除“libgstpython-v2.6.dll”来解决问题。但是,NSIS不会删除该文件。注意,我确信路径是正确的。

以下是代码:

ReadRegStr $0 HKLM 'SOFTWARE\OSSBUILD\GStreamer' InstallDir
ReadRegStr $3 HKLM 'SOFTWARE\Wow6432Node\OSSBUILD\Gstreamer' InstallDir

${If} $0 == '' 
 ${AndIf} $3 == ''
    DetailPrint 'The HHPVideoServer plugin depends on Gstreamer, we will need to install the core Gstreamer Components.'
    DetailPrint 'Installing Gstreamer.'
    ExecWait '"msiexec" /i "$INSTDIR\GStreamer-WinBuilds-GPL-x86-Beta04-0.10.7.msi" /q /norestart' $1
    DetailPrint 'Finished installing Gstreamer with error code $1' 

    ReadRegStr $0 HKLM 'SOFTWARE\OSSBUILD\GStreamer' InstallDir
    ReadRegStr $3 HKLM 'SOFTWARE\Wow6432Node\OSSBUILD\Gstreamer' InstallDir

    ${If} $0 != ''
        DetailPrint 'Gstreamer Plugins installed to $0'
        DetailPrint 'Deleting $0lib\gstreamer-0.10\libgstpython-v2.6.dll'
        DELETE '$0lib\gstreamer-0.10\libgstpython-v2.6.dll''
    ${ElseIF} $3 != ''
        DetailPrint 'Gstreamer Plugins installed to $3'
        DetailPrint 'Deleting $3lib\gstreamer-0.10\libgstpython-v2.6.dll'
       DELETE '$3lib\gstreamer-0.10\libgstpython-v2.6.dll'
    ${EndIf}

${Else}
    DetailPrint 'Gstreamer already installed.'
${EndIf}

删除调用永远不会有效。如果我手动删除该文件,它会修复gstreamer的错误消息。此外,安装程序正在以管理员权限运行。

1 个答案:

答案 0 :(得分:1)

您可以快速进行测试吗?

在两个地方进行删除调用后添加以下行:

IfErrors 0 +2
DetailPrint 'There was an error trying to delete the file!'

这将告诉我们是否正在尝试删除该文件但是它不能或者如果它没有找到该文件。删除只会在找到文件时抛出错误并且无法将其删除。

如果您最终收到错误,那么下一步是尝试找出当您尝试删除它时使用DLL的程序或服务。