2017-11-01 38 views
0

내가 NSIS 설치에 regsvr32 (순간없는 침묵)로 DLL을 등록하려고 해요로 DLL을 등록 :NSIS에 regsvr32

Exec '"$SYSDIR\regsvr32.exe" "$SYSDIR\mp4mux.dll"' 
Exec '"$SYSDIR_32bit\regsvr32.exe" "$SYSDIR_32bit\mp4mux.dll"' 

그것은 DLL은 (등록 된 것을 팝업을 보여줍니다 모두 32 비트 및 64 비트)과의 로그를 설치는 다음 라인을 보여줍니다 나는 그것을 사용하려고 해요 때

Execute: "C:\WINDOWS\system32\regsvr32.exe" "C:\WINDOWS\system32\mp4mux.dll" 
//for 32-bit is similar 

그러나, 그것이 내가 x264 코덱 MP4 비디오를 만들려고 해요 (작동하지 않습니다, 그래서 그냥 오류를 보여줍니다). 이 명령을 명령 줄에 복사하면 동일한 팝업이 표시되고 비디오가 만들어집니다.

이 흐름이 잘못 될 수 있습니까? 나는 성공하지 못한 채 RegDLLrundll32도 시도했다.

UPDATE :

나는 64에 대한 레지스트리에 등록 된 내 DLL 만 X32을 찾을 수 없습니다. C:\WINDOWS\System32\mp4mux.dll 녹음은 64 비트 Windows에서 SysWOW64와에 SYSTEM32 ($SysDir)에서 32 비트 응용 프로그램을 리디렉션합니다 SysWow64

+0

아마도 DLL을 잘 등록하고있을 것입니다. 그러나 "작동하지 않음"부분에 대한 코드를 표시해야합니다. 또한 설치 프로그램에서 Windows 또는 Windows \ System 디렉토리에 아무 것도 복사하지 마십시오. DLL을 생성하면됩니다. – selbie

+0

@selbie, 그 코드에 있는지 모르겠다. CL을 통해이 DLL을 수동으로 등록하면 잘 작동한다. –

답변

1

Filesystem redirection 만 DLL이 존재하지 않습니다.

할 수 있습니다

  • 대신 64 비트 비스타 이후

$WinDir\Sysnative\regsvr32.exe을 실행하지만 왜 통과 x64.nsh에서 ${DisableX64FSRedirection} 매크로 짧은 시간 동안

  • 안 리디렉션 라이브러리 매크로를 사용할 수있는 경우 문제가 발생합니다.

    !include Library.nsh 
    !define LIBRARY_X64 
    !insertmacro InstallLib REGDLL NOTSHARED REBOOT_NOTPROTECTED c:\myfiles\64\dllname.dll $SYSDIR\dllname.dll $SYSDIR 
    
  • +0

    DLL을 설치 폴더로 옮겼습니다. 리디렉션 인 것처럼 보였지만 팝업에서는 DLL에 대한 올바른 패스를 보여주었습니다. 고맙습니다. –

    +0

    리디렉션은 Windows 내부 깊숙한 곳이므로 대화 상자/메시지 상자에서 경로를보고 알 수 없습니다. – Anders