在Inno Setup的Run部分之后创建桌面链接图标

时间:2017-05-19 18:43:57

标签: inno-setup

概述

我的安装过程涉及在磁盘上放置超过2GB的数据。所以我使用Inno Setup,但我运行7ZIP来实际提取/安装文件。

问题

我遇到的问题是,似乎在[Run]部分之前创建了桌面图标,因此没有用于设置桌面链接的图标。有没有解决的办法? (我已尝试将{src}{app}作为文件夹来查找图标。)

CODE

[Run]
Filename: "{pf64}\7-zip\7zG.exe"; Parameters: "x ""{src}\GL.7z"" -o""{app}\"" * -r -aoa"; \
  Flags: runascurrentuser

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

1 个答案:

答案 0 :(得分:2)

快速而肮脏的解决方案是设置ChangesAssociations

[Setup]
ChangesAssociations=yes

它使Windows资源管理器在安装程序完成后刷新所有图标。

一个干净的解决方案是仅使用CreateShellLink[Run]部分之后创建图标:

[Run]
Filename: "{pf64}\7-zip\7zG.exe"; Parameters: "x ""{src}\GL.7z"" -o""{app}\"" * -r -aoa"; \
    Flags: runascurrentuser; AfterInstall: CreateIcon

[Code]

procedure CreateIcon;
var
  IconFileName: string;
begin
  IconFileName := ExpandConstant('{commondesktop}\DashBoard.lnk');

  CreateShellLink(
    IconFileName, '',
    ExpandConstant('{app}\dashboard\node_modules\electron\dist\electron.exe'),
    'main.js', ExpandConstant('{app}\dashboard'),
    ExpandContant('{app}\dashboard\build\configure.ico'), 0, SW_SHOWNORMAL);

  SetElevationBit(IconFileName);
end;