【问题标题】:Inno Setup desktop shortcut (link) which has "Run as administrator" advanced property set设置了“以管理员身份运行”高级属性的 Inno Setup 桌面快捷方式(链接)
【发布时间】:2017-10-19 19:27:06
【问题描述】:

我正在努力让 Inno 设置 (5.5.9u) 创建一个桌面快捷方式,该快捷方式有一个图标并设置了 “以管理员身份运行” 的高级属性。

问题

这个问题,有点不同于:How to set 'Run as administrator' on a file using Inno Setup

因为我想要做的不是在安装时以管理员权限运行程序(安装程序已经在管理员运行),而是在桌面上留下一个具有高级的链接> “以管理员身份运行”的属性

代码示例

[Icons]
Name: "{group}\EGPL Watson Uninstall"; Filename: "{uninstallexe}"; \
    WorkingDir: "{app}"
Name: "{commondesktop}\DashBoard"; \
    Filename: "{app}\dashboard\node_modules\electron\dist\electron.exe main.js"; \
    WorkingDir: "{app}\dashboard"; \
    IconFilename: "{src}\dashboard\build\configure.ico"

【问题讨论】:

    标签: inno-setup desktop-shortcut windows-shortcut


    【解决方案1】:

    首先,确保您有充分的理由以管理员权限运行您的应用程序。用户应用程序不需要管理员权限。如果他们需要它,这通常是糟糕设计的标志。希望应用程序以管理员权限运行的一个常见(错误)原因是应用程序需要写入其安装文件夹。

    Application does not work when installed with Inno Setup


    Inno Setup 本身不支持创建设置了“以管理员身份运行” 标志的快捷方式。

    “以管理员身份运行” 标志有点像 .lnk 文件。见:

    您可以使用以下代码设置该位:

    [Icons]
    Name: "{userdesktop}\My Program"; Filename: "{app}\MyProg.exe"; \
      AfterInstall: SetElevationBit('{userdesktop}\My Program.lnk')
    
    [Code]
    
    procedure SetElevationBit(Filename: string);
    var
      Buffer: string;
      Stream: TStream;
    begin
      Filename := ExpandConstant(Filename);
      Log('Setting elevation bit for ' + Filename);
    
      Stream := TFileStream.Create(FileName, fmOpenReadWrite);
      try
        Stream.Seek(21, soFromBeginning);
        SetLength(Buffer, 1);
        Stream.ReadBuffer(Buffer, 1);
        Buffer[1] := Chr(Ord(Buffer[1]) or $20);
        Stream.Seek(-1, soFromCurrent);
        Stream.WriteBuffer(Buffer, 1);
      finally
        Stream.Free;
      end;
    end;
    

    在 Inno Setup 的 Unicode 版本(Inno Setup 6 的唯一版本)上测试。但更自然地,它也应该适用于 Ansi 版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-12
      • 2011-05-01
      • 2011-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      相关资源
      最近更新 更多