我有以下.bat文件:
fbwfmgr /enable
.
.
.
fbwfmgr /addexclusion c: "some folder 1"
fbwfmgr /addexclusion c: "some folder 2"
.
.
.
我正在Inno Setup的[Run]
部分调用,如下所示:
Filename: "{tmp}\set_write_protection_rules.bat";
我也试过这个:
Filename: "{cmd}"; Parameters: "/c ""{tmp}\set_write_protection_rules.bat""";
我总是收到消息
'fbwfmgr'未被识别为内部或外部命令,可操作程序或批处理文件。
如果我通过双击它来运行.bat文件就行了,如果我自己从cmd窗口运行它就可以了。我在这里缺少什么?
我在以管理员身份登录的Windows Embedded Standard x64系统上运行此功能。
编辑:
添加fbwfmgr.exe
的完整路径无法解决问题(我还手动查看了fbwfmgr.exe
的实际位置):
%systemroot%\system32\fbwfmgr.exe /enable
我发现a similar thread here在从vbs运行.bat文件时OP遇到了同样的问题,似乎没有找到解决方案。从一个建议那里切断中间人,我试图直接从Inno Setup调用fbwfmgr
,行如下:
Filename: "{cmd}"; Parameters: "c/ ""fbwfmgr /enable""";
但没有用。它只是打开一个空的控制台窗口。当我尝试从那里拨打fbwfmgr
时,无法识别。
答案 0 :(得分:3)
不是吗,因为系统fbwfmgr
中只有C:\Windows\System32
的64位版本?
作为32位应用程序中的Inno Setup,默认为gets redirected to C:\Windows\SysWOW64
(32位版本的C:\Windows\System32
)。如果fbwfmgr
中没有32位版本的C:\Windows\SysWOW64
,则Inno安装程序无法找到它。
添加Flags: 64bit
以使Inno Setup找到fbwfmgr
的64位版本。
此外,通过命令解释程序(.exe
)运行cmd.exe
应用程序毫无意义。
[Run]
Filename: "fbwfmgr.exe"; Parameters: "/enable"; Flags: 64bit
使用批处理文件,机制有点复杂。 Inno Setup默认情况下(32位应用程序)运行32位cmd.exe
,然后查看C:\Windows\SysWOW64
。如果您添加Flags: 64bit
,Inno安装程序将运行64位cmd.exe
,这将调查C:\Windows\System32
。
[Run]
Filename: "{tmp}\set_write_protection_rules.bat"; Flags: 64bit
答案 1 :(得分:1)
您可能需要提供gl.h
的路径。
e.g。
fbwfmgr
注意强>
您几乎肯定也需要使用管理权限运行批处理脚本!我知道您说您以管理员身份登录,但您需要确保您具有运行脚本的权限,尤其是当您从另一个应用程序(inno)运行时。