Mafioza,
из справки мы узнаём о том что значки создаются до того как мы можем настроить их создание (в конце распаковки файлов)
читать дальше »
==================================================================
Задания в секциях от начала до завершения установки выполняются в следующем порядке:
•Выполняется [InstallDelete].
•Параметры секции [UninstallDelete] располагаются в логе деинсталлятора (который на этом этапе находится в оперативной памяти).
•При необходимости создается папка приложения.
•Выполняется [Dirs].
•При необходимости резервируется имя файла деинсталлятора.
•Выполняется [Files]. (Регистрация файлов не происходит.)
•Выполняется [Icons].
•Выполняется [INI].
•Выполняется [Registry].
•Регистрируются файлы, нуждающиеся в регистрации, если только не требуется перезагрузка системы - в этом случае ни один файл не будет зарегистрирован до тех пор, пока система не перезапустится.
•При необходимости создается пункт в Установка/Удаление программ.
•Параметры [UninstallRun] располагаются в логе деинсталлятора.
•Завершается создание деинсталлятора и сохраняется на диске. После этого, пользователю не сможет отменить установку, и любые последующие ошибки не будут вызывать то откат всех действий.
•Выполняется [Run], за исключением файлов с флагом postinstall, которые выполнятся после того, как отобразится страница Установка завершена.
•При ChangesAssociations=yes меняются ассоциации для файлов.
•Если ChangesEnvironment=yes остальные приложения информируются об изменении переменных среды.
Все параметры выполняются инсталлятором в том порядке, в котором они располагаются в секции.
==========================================================================
Поэтому создадим ярлыки по завершении работы инсталла (после нажатия на кнопку "завершить" на финишной странице) - этап ssDone
результат:
читать дальше »
Код:

[Setup]
AppName=Icon_Demo
AppVerName=Icon_Demo
DefaultDirName={pf}\Icon_Demo
[UninstallDelete]
Type: files; Name: "{userprograms}\Icon Demo Installer.lnk"
Type: files; Name: "{userdesktop}\Icon Demo Installer.lnk"
[code]
var
IconPage: TInputOptionWizardPage;
procedure InitializeWizard();
begin
IconPage := CreateInputOptionPage(wpInstalling,'Настройка', 'настройте создание значков', '', False, False);
with IconPage do
begin
Add('Значок в меню "Пуск"');
Add('Значок на рабочем столе');
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssDone then
begin
if IconPage.Values[0] = True then CreateShellLink(ExpandConstant('{userprograms}\Icon Demo Installer.lnk'), 'описание', ExpandConstant('{srcexe}'), '', ExpandConstant('{src}'), ExpandConstant('{srcexe}'), 0, SW_SHOWNORMAL);
if IconPage.Values[1] = True then CreateShellLink(ExpandConstant('{userdesktop}\Icon Demo Installer.lnk'), 'описание', ExpandConstant('{srcexe}'), '', ExpandConstant('{src}'), ExpandConstant('{srcexe}'), 0, SW_SHOWNORMAL);
end;
end;
также нельзя забывать удалять их вручную (кажись потому что их нет в логе деинсталятора), те указывать что их надо удалить (секция UninstallDelete)