0

アプリケーションと一緒に 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 のエラー メッセージが修正されます。また、インストーラーは管理者権限で実行されています。

4

1 に答える 1

1

こんにちは、簡単なテストをしていただけますか?

両方の場所で削除呼び出しを行った後、次の行を追加します。

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

これにより、ファイルを削除しようとして削除できないか、またはファイルが見つからないかがわかります。Delete は、ファイルが見つかったときにのみエラーをスローし、それを削除できません。

エラーが発生した場合、次のステップは、DLL を削除しようとしたときに、どのプログラムまたはサービスが DLL を使用しているかを把握しようとすることです。

于 2012-08-24T18:23:27.847 に答える