我有一个
Run
部分:
[Run]
Filename: "{app}\myapp.exe"; Description: {cm:RunNow}; \
Flags: postinstall nowait runascurrentuser; Check: TypeIsCompact;
Filename: "{app}\myapp.exe"; Description: {cm:RunNow}; \
Flags: postinstall nowait runasoriginaluser; Check: not TypeIsCompact;
还有支票
TypeIsCompact
:
function TypeIsCompact: Boolean;
begin
if SILENT then
begin
Result := DONTINSTALLMSSQL;
end
else
begin
Result := WizardForm.TypesCombo.ItemIndex = 1;
end;
log('Type is compact: ' + BoolToStr(Result));
end;
尽管尚未选择类型,但在
Run
部分中调用的检查会返回 True
。这样我就无法使用带有标志 runasoriginaluser
的文件名,并且 myapp.exe 以标志 runascurrentuser
开头。
我需要根据所选类型在有或没有管理员权限的情况下运行 myapp.exe。
有什么直接的方法或者我必须为完成页面编写自定义复选框吗?
您不必创建自己的复选框。但我相信你需要自己实现程序的执行。
有关如何重新实现“完成”页面上复选框的处理的一些示例,请参阅:
在 Inno Setup 的 Run 条目中运行脚本代码(添加注册表项)而不是可执行文件
Exec
或 ExecAsOriginalUser
。