nsis安装执行bat但无所事事

时间:2018-10-26 14:50:12

标签: batch-file cmd nsis

我有一个批处理文件,需要在我的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命令,但得到的结果相同。

蝙蝠的内容如下:

NET USE Z: /d
NET USE Z: \\server\folder
pause

我在做什么错?我还能尝试什么?如果有帮助,可以在Win10 Home版本上测试安装程序。 预先感谢。

2 个答案:

答案 0 :(得分:0)

映射的驱动器为not shared across UAC boundaries

适用的解决方案/解决方法:

  • 如果不需要管理员权限来安装应用程序,则可以在脚本中使用RequestExecutionLevel User属性。

  • 使用UNC路径(\\server\folder

  • 如果要安装应用程序,则该应用程序可以在启动时设置映射。

  • 使用ShellExecAsUser plug-in在Explorer.exe的上下文中执行批处理文件

答案 1 :(得分:0)

Anders的答案很好用,可以弄清楚问题出在哪里,在我的上下文中,我无法使用1-3个选项,所以我开始做4个,这使我想到了use explorer to run as current user,这为我提供了一个更简单的解决方案

Exec '"$WINDIR\explorer.exe" "$INSTDIR\network.bat"'

再指出一点,如果安装程序未升级,则此逻辑无关紧要,因为这样您就可以运行Exec,它与您的进程具有相同的高度。