NSIS 用 regsvr32 注册 DLL
NSIS register DLL with regsvr32
我正在尝试在 nsis 安装程序中使用 regsvr32
注册 DLL(目前没有静默):
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 视频,所以它只显示错误)。
如果我将此命令复制到命令行,则会显示相同的弹出窗口并创建视频。
这个流程可能出了什么问题?我也尝试了 RegDLL
和 rundll32
但没有成功。
更新:
我找不到在注册表中为 x64 注册的 DLL,只有 x32。 C:\WINDOWS\System32\mp4mux.dll
的记录不存在,仅存在 SysWow64
中的 dll
Filesystem redirection 会将 32 位应用程序从 System32 ($SysDir
) 重定向到 64 位 Windows.
上的 SysWow64
你可以
- 使用来自 x64.nsh
的 ${DisableX64FSRedirection}
宏短时间禁用重定向
- 在 64 位 Vista 及更高版本上改为执行
$WinDir\Sysnative\regsvr32.exe
但是既然可以使用库宏,为什么还要这么麻烦呢:
!include Library.nsh
!define LIBRARY_X64
!insertmacro InstallLib REGDLL NOTSHARED REBOOT_NOTPROTECTED c:\myfiles\dllname.dll $SYSDIR\dllname.dll $SYSDIR
我正在尝试在 nsis 安装程序中使用 regsvr32
注册 DLL(目前没有静默):
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 视频,所以它只显示错误)。 如果我将此命令复制到命令行,则会显示相同的弹出窗口并创建视频。
这个流程可能出了什么问题?我也尝试了 RegDLL
和 rundll32
但没有成功。
更新:
我找不到在注册表中为 x64 注册的 DLL,只有 x32。 C:\WINDOWS\System32\mp4mux.dll
的记录不存在,仅存在 SysWow64
Filesystem redirection 会将 32 位应用程序从 System32 ($SysDir
) 重定向到 64 位 Windows.
你可以
- 使用来自 x64.nsh 的
- 在 64 位 Vista 及更高版本上改为执行
$WinDir\Sysnative\regsvr32.exe
${DisableX64FSRedirection}
宏短时间禁用重定向
但是既然可以使用库宏,为什么还要这么麻烦呢:
!include Library.nsh
!define LIBRARY_X64
!insertmacro InstallLib REGDLL NOTSHARED REBOOT_NOTPROTECTED c:\myfiles\dllname.dll $SYSDIR\dllname.dll $SYSDIR