2012-05-30 111 views

回答

2

您不能直接禁用它,但可以檢查它是否以靜默方式運行,並在InitializeSetup()/InitialiseUninstall()事件功能期間顯示消息/退出。

function InitializeSetup(): Boolean; 
begin 
    // Default to OK 
    result := true; 

    // If it's in silent mode, exit 
    if WizardSilent() then 
    begin 
    MsgBox('This setup doesn''t support silent installations.', mbInformation, MB_OK); 
    result := false; 
    end; 
end; 

或者用於卸載:

function InitializeUninstall(): Boolean; 
begin 
    // Default to OK 
    result := true; 

    // If it's in silent mode, exit 
    if UninstallSilent() then 
    begin 
    MsgBox('This setup doesn''t support silent uninstallation.', mbInformation, MB_OK); 
    result := false; 
    end; 
end; 

(未經測試空氣代碼)

如果你想默默(???:o)在非靜默模式下重新運行安裝程序,你可以用這個InitializeSetup如果塊中:

ShellExecAsOriginalUser('', ExpandConstant('{srcexe}'), '', '', SW_SHOWNORMAL, ewNoWait, 0); 

注意,這也將下降傳遞的任何其他參數並再次提示升高。

+0

當您將「結果」設置爲False以中斷安裝程序後,您就錯過了'Exit;'。但是,如果沒有'/ SILENT'參數(不知道是否可能),從'ExpandConstant('{srcexe}')'執行setup可執行文件會更好嗎? +1在此期間.. – TLama

+0

@TLama:Oopos,我已經調整爲有更好的默認值,這可能會更容易取決於還需要進入該功能。至於重新運行'{srcexe}','[Code]'在設置的高位部分運行,所以新的非靜默部分也將被提升,從而破壞'... asoriginaluser'功能。 – Deanna

+1

@TLama:我說的是垃圾,它可以使用'ExecAsOriginalUser()'函數:o) – Deanna