我希望我的安装程序在开始时检查管理员权限 ,如果不执行弹出表单并退出安装的程序
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
答案 0 :(得分:2)
要检查管理员权限并有条件地中止安装,请使用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中实现该表单?
答案 1 :(得分:1)
将代码放在函数InitializeSetup()中,当安装程序启动时,该函数首先被调用。
如果您从此功能返回 False ,安装程序将立即退出。