概述
我的安装过程涉及在磁盘上放置超过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')
答案 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;