Автор: StalkerSoftware
Дата сообщения: 22.08.2016 08:48
Hi All,
Задача простая: Создать на рабочем столе папку и задать этой папке
определенную иконку.
В FAQ по ISS это вроде бы описано, делаю и проверяю см. test.iss.
На WinXP SP3 все работает более-менее нормально: после отработки установки,
на рабочем столе появляется папка, и через несколько секунд после окончания
установки она меняет свою иконку на заданную.
Пробую тоже самое на Win7 x64 SP1. Сама папка создается нормально, а вот
иконку она менять не хочет. Файл desktop.ini который я создаю в этой папке
точно такой же, как если бы я поменял эту иконку руками.
Я подозреваю, что помимо создания этого файла, надо дернуть какую то
API-функцию, что бы сказать винде о смене иконки у папки, но вот какую
именно я не знаю.
В общем нужна помощь в решении указанной выше задачи.
[more=Это мой тестовый скрипт]
; Script generated by the Inno Script Studio Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "Моя программа"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{DA6C91DB-3B95-4AFE-862E-C77CCE2B7E9E}
AppName={#MyAppName}
AppVerName={#MyAppName}
DefaultDirName=C:\TEST
DefaultGroupName="Моя программа"
AllowNoIcons=yes
OutputBaseFilename=test_setup
Compression=lzma
SolidCompression=yes
AllowRootDirectory=True
PrivilegesRequired=lowest
AlwaysShowComponentsList=no
[Languages]
Name: "Russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Icons]
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"; Languages: Russian
[UninstallDelete]
Type: files; Name: "{commondesktop}\Мой каталог\Desktop.ini"
[Dirs]
Name: "{commondesktop}\Мой каталог"; Attribs: system; Languages: Russian
[INI]
Filename: "{commondesktop}\Мой каталог\Desktop.ini"; Section: ".ShellClassInfo"; Key: "IconResource"; String: "%SystemRoot%\system32\SHELL32.dll,0"; MinVersion: 0,6.0; Languages: Russian
Filename: "{commondesktop}\Мой каталог\Desktop.ini"; Section: ".ShellClassInfo"; Key: "IconFile"; String: "%SystemRoot%\system32\SHELL32.dll"; OnlyBelowVersion: 0,6.0; Languages: Russian
Filename: "{commondesktop}\Мой каталог\Desktop.ini"; Section: ".ShellClassInfo"; Key: "IconIndex"; String: "0"; OnlyBelowVersion: 0,6.0; Languages: Russian
Filename: "{commondesktop}\Мой каталог\Desktop.ini"; Section: "ViewState"; Key: "Mode"; String: ""; MinVersion: 0,6.0; Languages: Russian
Filename: "{commondesktop}\Мой каталог\Desktop.ini"; Section: "ViewState"; Key: "Vid"; String: ""; MinVersion: 0,6.0; Languages: Russian
Filename: "{commondesktop}\Мой каталог\Desktop.ini"; Section: "ViewState"; Key: "FolderType"; String: "Generic"; MinVersion: 0,6.0; Languages: Russian
[Code]
procedure DeinitializeSetup();
var
cFileName :String;
nErrorCode :Integer;
begin
if WizardForm.CurPageID = WpFinished then begin
cFileName := ExpandConstant('{commondesktop}\Мой каталог\Desktop.ini');
Exec('attrib', ' +h +s ' + '"' + cFileName + '"', '', SW_HIDE, ewWaitUntilTerminated, nErrorCode);
end;
end;
[/more]