【问题标题】:Inno Setup - Prevent installation and execute program when installer is executed without administrator privilegesInno Setup - 在没有管理员权限的情况下执行安装程序时阻止安装和执行程序
【发布时间】:2017-03-30 19:54:20
【问题描述】:

我希望我的安装程序一开始就检查管理员权限,如果不检查,则执行弹出表单并退出安装的程序

procedure MyAfterInstall(); 
var 
  MyProgChecked: boolean;
  ErrorCode : Integer;      
begin    
  MyProgChecked := not IsAdminLoggedOn;    
  if MyProgChecked =true then   
    ShellExec('', ExpandConstant('\users\public\EzPasteFiles\RAADMIN.EXE'), '',      
              '', SW_SHOW, ewNoWait,ErrorCode ) ; 
  ExitProcess(0);  
end;

我的问题是,放在哪里以及如何使 RAADMIN.EXE 可用于该程序?

我试过没有成功

Source: "c:\Dropbox\word\EzPasteOffice64Win10\RunAsAnAdminTutorial\RAADMIN.exe"; \
  DestDir: "\users\public\EzPasteFiles"; AfterInstall: MyAfterInstall 

【问题讨论】:

    标签: inno-setup


    【解决方案1】:

    要检查管理员权限并有条件地中止安装,请使用InitializeSetup event function

    要在安装前提取一些文件,请使用ExtractTemporaryFile support function

    当然,这一切都是有道理的,只要你设置了PrivilegesRequired=lowest。否则,您的安装程序将永远不会在没有管理员权限的情况下运行。

    [Setup]
    PrivilegesRequired=lowest
    
    [Files]
    Source: "C:\source\path\RAADMIN.exe"; Flags: dontcopy
    
    [Code]
    
    function InitializeSetup(): Boolean;
    var 
      ErrorCode: Integer;
      Path: string;
    begin    
      Result := True;
    
      if not IsAdminLoggedOn then
      begin
        Log('No admin privileges, executing RAADMIN');
        ExtractTemporaryFile('RAADMIN.exe');
        Path := ExpandConstant('{tmp}\RAADMIN.exe');
        if not Exec(Path, '', '', SW_SHOW, ewNoWait, ErrorCode) then
        begin
          MsgBox('Error executing RAADMIN', mbError, MB_OK);
        end;
        Result := False; { abort installation }
      end;
    end;
    

    虽然只是显示一个表单,你有没有考虑在 Inno Setup 中实现这个表单?

    【讨论】:

    • 感谢它运作良好,但我注意到一个奇怪的行为。表单弹出但在我正确卸载后第二次重新出现......知道为什么吗?我尝试过其他形式
    • 我们对您的申请一无所知。你试过调试吗?
    【解决方案2】:

    将您的代码放在 function InitializeSetup() 中,该函数在安装程序启动时首先被调用。

    如果您从此函数返回 False,安装程序将立即退出。

    详情:https://jrsoftware.org/ishelp/topic_scriptevents.htm

    【讨论】:

      猜你喜欢
      • 2020-06-11
      • 2022-10-24
      • 2020-06-04
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 2015-05-21
      • 2017-06-27
      • 1970-01-01
      相关资源
      最近更新 更多