2015-10-23 218 views
0

我需要提交以下命令:Inno Setup的 - BCDEDIT不工作

bcdedit /set {default} recoveryenabled No 

,但它不是與Inno Setup的工作。

我已經試過如下:

[Setup] 
PrivilegesRequired=admin 

[Run] 
Filename: "{cmd}"; Parameters: "/c ""bcdedit.exe /set recoveryenabled No"""; 

但我仍然看到No不適用。正如你可以看到下面,它仍然是Yes。但是當我手動從命令提示符執行相同的命令時,它可以工作。任何想法爲什麼它不在Inno安裝程序中工作?我也以管理員身份運行setup.exe

C:\windows\system32>bcdedit /v 

Windows Boot Manager 
-------------------- 
identifier    {9dea862c-5cdd-4e70-acc1-f32b344d4795} 
device     partition=\Device\HarddiskVolume2 
path     \EFI\Microsoft\Boot\bootmgfw.efi 
description    Windows Boot Manager 
locale     en-GB 

integrityservices  Enable 

timeout     30 

Windows Boot Loader 
------------------- 

device     partition=C: 
path     \windows\system32\winload.efi 
description    Windows 8.1 
locale     en-GB 

integrityservices  Enable 
recoveryenabled   Yes 
isolatedcontext   Yes 
allowedinmemorysettings 0x15000075 
osdevice    partition=C: 
systemroot    \windows 

nx      OptIn 
bootmenupolicy   Standard 
quietboot    Yes 

回答

1

可能有很多原因。很難說,因爲您沒有提供太多的信息來調試。

使用/K而不是/C是第一步,因爲它將保持打開cmd.exe窗口,以便您可以看到是否有任何錯誤消息。


當我使用一個簡單的安裝程序您[Run]部分條目,我得到:

「bcdedit.exe的」不被識別爲一個內部或外部命令,可操作 程序或批處理文件。

在我的系統(我相信這將是對你的一樣),那是因爲我運行Windows 64位和bcdedit.exeC:\Windows\System32。由於Inno Setup在32位應用程序中,默認情況下爲gets redirected to C:\Windows\SysWOW64C:\Windows\System32的32位版本)。並且沒有32位版本的bcdedit.exe

添加Flags: 64bit使Inno Setup找到64位版本的bcdedit.exe

另外,通過命令解釋器(cmd.exe)運行.exe應用程序沒有意義。

[Run] 
Filename: "bcdedit.exe"; Parameters: "/set recoveryenabled No"; Flags: 64bit 

或者使用64-bit install mode