nsis 安装执行 bat 但什么都不做
nsis install executing bat but doing nothing
我有一个批处理文件需要 运行 在我的 NSIS 安装程序中。它只是使用 NET USE Z: \server\folder 安装一个网络驱动器。安装程序似乎工作正常,cmd 已启动,命令甚至输出一切正常 1,但实际上并未映射驱动器
image with commands output
nsis 部分是
Section ""
;Install path
SetOutPath $INSTDIR
;the bat file
File network.bat
;execute bat
Exec '"$INSTDIR\network.bat"'
SectionEnd
如果我手动执行 bat,驱动器将得到完美映射。我也尝试使用 nsExec::ExecToLog '"C:\Windows\System32\net.exe" use z: \server\folder'
或 Exec "$SYSDIR\Net.exe use z: \server\folder"
或 ExecWait '"cmd.exe" /C net use z: \server\folder'
直接执行 net 命令,但我得到了相同的结果。
bat内容如下:
NET USE Z: /d
NET USE Z: \server\folder
pause
我做错了什么?我还能尝试什么?如果有帮助,我将在 Win10 家庭版上测试安装程序。
提前致谢。
映射的驱动器是 not shared across UAC boundaries。
适用solutions/workarounds:
如果您不需要管理员权限来安装您的应用程序,您可以在脚本中使用 RequestExecutionLevel User
属性。
使用 UNC 路径 (\server\folder
)
如果您安装的是应用程序,应用程序可以在启动时设置映射。
使用ShellExecAsUser plug-in在Explorer.exe
的上下文中执行批处理文件
Anders 的回答非常有效,让我明白了问题出在哪里,在我的上下文中,我不能使用 1-3 个选项,所以我开始做 4 个,它引导我到这个 use explorer to run as current user 它给了我一个更简单的解决方案。
Exec '"$WINDIR\explorer.exe" "$INSTDIR\network.bat"'
再指出一件事,如果安装程序未提升,则此逻辑不相关,因为那样您就可以 运行 Exec
,这将与您的进程具有相同的提升。
我有一个批处理文件需要 运行 在我的 NSIS 安装程序中。它只是使用 NET USE Z: \server\folder 安装一个网络驱动器。安装程序似乎工作正常,cmd 已启动,命令甚至输出一切正常 1,但实际上并未映射驱动器
image with commands output
nsis 部分是
Section ""
;Install path
SetOutPath $INSTDIR
;the bat file
File network.bat
;execute bat
Exec '"$INSTDIR\network.bat"'
SectionEnd
如果我手动执行 bat,驱动器将得到完美映射。我也尝试使用 nsExec::ExecToLog '"C:\Windows\System32\net.exe" use z: \server\folder'
或 Exec "$SYSDIR\Net.exe use z: \server\folder"
或 ExecWait '"cmd.exe" /C net use z: \server\folder'
直接执行 net 命令,但我得到了相同的结果。
bat内容如下:
NET USE Z: /d
NET USE Z: \server\folder
pause
我做错了什么?我还能尝试什么?如果有帮助,我将在 Win10 家庭版上测试安装程序。 提前致谢。
映射的驱动器是 not shared across UAC boundaries。
适用solutions/workarounds:
如果您不需要管理员权限来安装您的应用程序,您可以在脚本中使用
RequestExecutionLevel User
属性。使用 UNC 路径 (
\server\folder
)如果您安装的是应用程序,应用程序可以在启动时设置映射。
使用ShellExecAsUser plug-in在Explorer.exe
的上下文中执行批处理文件
Anders 的回答非常有效,让我明白了问题出在哪里,在我的上下文中,我不能使用 1-3 个选项,所以我开始做 4 个,它引导我到这个 use explorer to run as current user 它给了我一个更简单的解决方案。
Exec '"$WINDIR\explorer.exe" "$INSTDIR\network.bat"'
再指出一件事,如果安装程序未提升,则此逻辑不相关,因为那样您就可以 运行 Exec
,这将与您的进程具有相同的提升。