Войти

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 5]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [21] 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

Gnom_aka_Lexander
12-07-2012, 12:36
t16bz, WizardForm.ComponentsList.Font.Name := 'MS Sans Serif';
Дело, конечно не в шрифте, а в косяке китайцев, но факт остается фактом - выбор шрифта без ClearType-сглаживания вполне спасает

FX-DENIS
13-07-2012, 01:29
Джони так поможешь ?

Johny777
13-07-2012, 02:17
FX-DENIS,
в общем то уже!

мне надо скопировать папку в мои документы текущего пользователя,без создания папки названия игры »
у меня в примере так и есть и никакие "папки названия игры" не создаются
а флаг "создавать подкаталоги" по незамысловатой причине работает только с флагом "обрабатывать подкаталоги"
но "обрабатывать подкаталоги" может работать и в одиночку (я ж не знаю есть ли в паке из которой ты копируешь папки с файлами)
константа {userdocs} в XP сработает ?»
ну поддержку XP товарищи ещё не отменили и константа одна, так что сам догадайся
давай ты выложи полные пути-примеры откуда, куда, что и из каких папок копируется, потому что я не совсем понимаю, что именно тебя не устраивает
...............................................................................
кажись понял
ты хочешь из рядом лежащей папки "Ubisoft" скопировать файлы в Мои Документы\папка названия игры\Ubisoft
ну припиши

... DestDir: {userdocs}\Driver San Francisco\Ubisoft; Flags: external skipifsourcedoesntexist

R.i.m.s.k.y.
13-07-2012, 06:38
Johny777, FX-DENIS, мнээээ, а в шапке смотрели стандартные папки Windows ?
; Данный скрипт позволяет получить путь к стандартным папкам Windows

[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[ Code]
const
MAX_PATH = 260;
// ниже приведён список id папок, путь которой хотим получить...
// Виртуальный каталог, представляющий Рабочий стол. (Корень в проводнике)
CSIDL_DESKTOP = $0000;
// Виртуальный каталог для Internet Explorer.
CSIDL_INTERNET = $0001;
// Меню Пуск -> Программы
CSIDL_PROGRAMS = $0002;
// Виртуальный каталог, содержащий иконки пунктов панели управления
CSIDL_CONTROLS = $0003;
// Виртуальный каталог, содержащий установленные принтеры
CSIDL_PRINTERS = $0004;
// Виртуальный каталог, представляющий папку "Мои документы"
CSIDL_PERSONAL = $0005;
// До Vista ссылался на какталог "Мои документы" на жёстком диске
// Избранное. (обычно C:\Documents and Settings\username\Favorites)
CSIDL_FAVORITES = $0006;
// Пуск -> Программы -> Автозагрузка
CSIDL_STARTUP = $0007;
// Недавние документы (обычно C:\Documents and Settings\username\My Recent Documents
CSIDL_RECENT = $0008;
// Папка, содержащая ярлыки меню "Отправить" (Sent to...) (обычно C:\Documents and Settings\username\SendTo)
CSIDL_SENDTO = $0009;
// Виртуальный каталог, содержащий файлы в корзине текущего пользователя
CSIDL_BITBUCKET = $000a;
// Элементы меню Пуск текущего пользователя (обычно C:\Documents and Settings\username\Start Menu)
CSIDL_STARTMENU = $000b;
// Рабочий стол текущего пользователя (обычно C:\Documents and Settings\username\Desktop)
CSIDL_DESKTOPDIRECTORY = $0010;
// Виртуальный каталог, представляющий папку "Мой компьютер"
CSIDL_DRIVES = $0011;
// Виртуальный каталог, представляющий "Сетевое окружение"
CSIDL_NETWORK = $0012;
// Папка "My Nethood Places" (обычно C:\Documents and Settings\username\NetHood)
// В неё ссылки на избранные расшаренные ресурсы
CSIDL_NETHOOD = $0013;
// Папка, содержащая установленные шрифты. (обычно C:\Windows\Fonts)
CSIDL_FONTS = $0014;
// Шаблоны документов. (Обычно Settings\username\Templates)
CSIDL_TEMPLATES = $0015;
// Элементы меню Пуск для всех пользователей. (обычно C:\Documents and Settings\All Users\Start Menu)
// Константы, начинающиеся на CSIDL_COMMON_ существуют только в NT версиях
CSIDL_COMMON_STARTMENU = $0016;
// Меню Пуск -> программы для всех пользователей (обычно C:\Documents and Settings\All Users\Start Menu\Programs)
CSIDL_COMMON_PROGRAMS = $0017;
// Меню Пуск -> Программы -> Автозагрузка для всех пользователей (обычно C:\Documents and Settings\All Users\Start Menu\Programs\Startup)
CSIDL_COMMON_STARTUP = $0018;
// Элементы Рабочего стола для всех пользователей (обычно C:\Documents and Settings\All Users\Desktop)
CSIDL_COMMON_DESKTOPDIRECTORY = $0019;
// Папка, в которой рограммы должны хранить свои данные(C:\Documents and Settings\username\Application Data)
CSIDL_APPDATA = $001a;
// Установленные принтеры. (обычно C:\Documents and Settings\username\PrintHood)
CSIDL_PRINTHOOD = $001b;
// user's nonlocalized Startup program group. Устарело.
CSIDL_ALTSTARTUP = $001d; // DBCS
// Устарело
CSIDL_COMMON_ALTSTARTUP = $001e; // DBCS
// Ссылки "Избранное" для всех пользователей
CSIDL_COMMON_FAVORITES = $001f;
// Временные Internet файлы (обычно C:\Documents and Settings\username\Local Settings\Temporary Internet Files)
CSIDL_INTERNET_CACHE = $0020;
// Папка для хранения Cookies (обычно C:\Documents and Settings\username\Cookies)
CSIDL_COOKIES = $0021;
// Хранит ссылки интернет истории IE
CSIDL_HISTORY = $0022;
// Административные инструменты текущего пользователя (например консоль MMC). Win2000+
CSIDL_ADMINTOOLS = $30;
// Папка для файлов, подготовленных к записи на CD/DVD
// (Обычно C:\Documents and Settings\username\Local Settings\Application Data\Microsoft\CD Burning)
CSIDL_CDBURN_AREA = $3b;
// Папка, содержащая инструменты администрирования
CSIDL_COMMON_ADMINTOOLS = $2f;
// Папака AppData для всех пользователей. (обычно C:\Documents and Settings\All Users\Application Data)
CSIDL_COMMON_APPDATA = $23;
// Папка "Общие документы" (обычно C:\Documents and Settings\All Users\Documents)
CSIDL_COMMON_DOCUMENTS = $2e;
// Папка шаблонов документов для всех пользователей (Обычно C:\Documents and Settings\All Users\Templates)
CSIDL_COMMON_TEMPLATES = $2d;
// Папка "Моя музыка" для всех пользователей. (обычно C:\Documents and Settings\All Users\Documents\My Music)
CSIDL_COMMON_MUSIC = $35;
// Папка "Мои рисунки" для всех пользователей. (обычно C:\Documents and Settings\All Users\Documents\My Pictures)
CSIDL_COMMON_PICTURES = $36;
// Папка "Моё видео" для всех пользователей (C:\Documents and Settings\All Users\Documents\My Videos)
CSIDL_COMMON_VIDEO = $37;
// Виртуальная папка, представляет список компьютеров в вашей рабочей группе
CSIDL_COMPUTERSNEARME = $3d;
// Виртуальная папка, представляет список сетевых подключений
CSIDL_CONNECTIONS = $31;
// AppData для приложений, которые не переносятся на другой компьютер (обычно C:\Documents and Settings\username\Local Settings\Application Data)
CSIDL_LOCAL_APPDATA = $1c;
// Виртуальный каталог, представляющий папку "Мои документы"
CSIDL_MYDOCUMENTS = $0c;
// Папка "Моя музыка"
CSIDL_MYMUSIC = $0d;
// Папка "Мои рисунки"
CSIDL_MYPICTURES = $27;
// Папка "Моё видео"
CSIDL_MYVIDEO = $0e;
// Папка пользователя (обычно C:\Documents and Settings\username)
CSIDL_PROFILE = $28;
// Папка Program Files (обычно C:\Program Files)
CSIDL_PROGRAM_FILES = $26;
CSIDL_PROGRAM_FILESX86 = $2a;
// Папка Program Files\Common (обычно C:\Program Files\Common)
CSIDL_PROGRAM_FILES_COMMON = $2b;
CSIDL_PROGRAM_FILES_COMMONX86 = $2c;
// Папка для ресерсов. Vista и выше (обычно C:\Windows\Resources)
CSIDL_RESOURCES = $38;
CSIDL_RESOURCES_LOCALIZED = $39;
// Папака System (обычно C:\Windows\System32 или C:\Windows\System)
CSIDL_SYSTEM = $25;
CSIDL_SYSTEMX86 = $29;
// Папка Windows. Она же %windir% или %SYSTEMROOT% (обычно C:\Windows)
CSIDL_WINDOWS = $24;

function SHGetSpecialFolderPath(hwndOwner: HWND; lpszPath: PChar; nFolder: Integer; fCreate: BOOL): BOOL;
external 'SHGetSpecialFolderPathA@shell32.dll stdcall';

function GetSpecialPath(CSIDL: Word): string;
var
s: string;
begin
SetLength(s, MAX_PATH);
if not SHGetSpecialFolderPath(0, PChar(s), CSIDL, True) then s := '';
Result:= PChar(s);
end;

procedure InitializeWizard;
begin
// определим расположение папки "Мои рисунки"
MsgBox(GetSpecialPath(CSIDL_MYPICTURES), mbInformation, MB_OK);
end;

LordSP
13-07-2012, 08:34
Ребят, доброе время суток! Столкнулся с такой проблемой, как при запуске инсталлятора, произвести проверку реестра на значение ключа, и вывести его в MsgBox. Чтобы призапуске появлялось сообщение: Ваша версия программы: "тут значение прочитанное из реестра"??? mbInformation, mbOK и если такое возможно, то эту версию вывести в label призапуске инсталлятора на странице wpWelcome, чтобы label сам считывал версию из реестра?

FX-DENIS
13-07-2012, 12:08
FX-DENIS, мнээээ » это что?Грузин? Посмотрел называется CSIDL_MYDOCUMENTS ,и что?Ты думаешь любой мужик увидевший это ,сразу поймет как эту константу использовать?Чтоб использовать константу при копировании папки я так понимаю надо знать язык программирования Паскаль.Не одного примера как использовать их не нашел.Так ,что не надо язвить уважаемый.

Джони благодарствую.

Johny777
13-07-2012, 12:55
... Так ,что не надо язвить уважаемый. »
Не наезжай на человека. Он тебе помочь хотел!
тот пример очень классный, тк содержит большое количество констант путей, которых нет в инно
прочитай сообщение автора http://forum.oszone.net/post-1218002-103.html
Не одного примера как использовать их не нашел »
внизу того же скрипта

наглядный, более практичный здесь http://krinkels.org/showpost.php?p=12005&postcount=532
только смыл?
зачем тебе китайские палочки, если есть вилка (читай константа {userdocs})

FX-DENIS
14-07-2012, 01:17
зачем тебе китайские палочки, если есть вилка (читай константа {userdocs}) »
Прочитал обе ссылки,присматривался,увидел только функции,но не увидел как указать какой файл скопировать и откуда,внешний или внутренний.В общем способ через {userdocs} будет для меня более упрощенным,спасибо вам.

L1nk3R
14-07-2012, 01:53
Привет. Может подскажет кто, как добавить программу в исключение браундера через инно?

Не наезжай на человека. Он тебе помочь хотел! »Ага, им помогают а они ещё выёживаются. Лучше б спасибо нажали :(. Ведь пример дали не для одного а со всеми поделились.

Johny777
14-07-2012, 02:40
L1nk3R,
вот тебе код для "добавления / удаления программ из правил брандмауэра Windows"
кто автор не знаю, но спасибо ему!


;Добавление правила для брандмауэра Windows

[Setup]
AppName=My Program
AppVerName=My Program
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
OutputDir=.

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[Icons]
Name: {group}\{cm:UninstallProgram,My Program}; Filename: {uninstallexe}

[code]
// Вспомогательные функции для установки Inno
// Используется для добавления / удаления программ из правил брандмауэра Windows
// Код, родом из http://news.jrsoftware.org/news/innosetup/msg43799.html

const
NET_FW_SCOPE_ALL = 0;
NET_FW_IP_VERSION_ANY = 2;

procedure SetFirewallException(AppName,FileName:string);
var
FirewallObject: Variant;
FirewallManager: Variant;
FirewallProfile: Variant;
begin
try
FirewallObject := CreateOleObject('HNetCfg.FwAuthorizedApplication');
FirewallObject.ProcessImageFileName := FileName;
FirewallObject.Name := AppName;
FirewallObject.Scope := NET_FW_SCOPE_ALL;
FirewallObject.IpVersion := NET_FW_IP_VERSION_ANY;
FirewallObject.Enabled := True;
FirewallManager := CreateOleObject('HNetCfg.FwMgr');
FirewallProfile := FirewallManager.LocalPolicy.CurrentProfile;
FirewallProfile.AuthorizedApplications.Add(FirewallObject);
except
end;
end;

procedure RemoveFirewallException( FileName:string );
var
FirewallManager: Variant;
FirewallProfile: Variant;
begin
try
FirewallManager := CreateOleObject('HNetCfg.FwMgr');
FirewallProfile := FirewallManager.LocalPolicy.CurrentProfile;
FireWallProfile.AuthorizedApplications.Remove(FileName);
except
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep=ssPostInstall then
SetFirewallException('My Server', ExpandConstant('{app}')+'\TCPServer.exe');
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep=usPostUninstall then
RemoveFirewallException(ExpandConstant('{app}')+'\TCPServer.exe');
end;

mariolast
15-07-2012, 14:55
Кто о наверняка сталкивался...
Как в английской винде сделать так, чтобы инсталлятор на русском не крякозябрами показывал а нормальными буквами? »
mariolast, попробуйте один из вариантов:
1. В апплете Regional and Language Options жмакнуть Advanced и выставить для Language for non-Unicode programs значение Russian. Перезагруз.
2. Если в системе есть какие-нибудь кириллические шрифты (нет - подгрузить свой), то использовать один из них, например:
Код:
[LangOptions]
LanguageName=Russian
DialogFontName=Arial Cyr
WelcomeFontName=Arial Cyr
TitleFontName=Arial Cyr
CopyrightFontName=Arial Cyr »

Так конечно же работает, но...нужен перегруз и т.д., что не есть удобно. Решение однако же нашел.
Для этого нужно было взять шрифт и отредактировать его так,чтобы на англ. винде кодировка нормально читалась, т.е. для каждой русс.буквы добавить кодировку. Делается это в редакторе шрифтов. Ну и в скрипте использовать уже этот шрифт. Я брал за основу Ариал и игрался с ним. В результате все работает как надо

t16bz
16-07-2012, 10:33
Что нужно сделать, чтобы в TFolderTreeView была открыта определенная директория?

Johny777
16-07-2012, 12:49
t16bz,
выделил жирным шрифтом строку


[Setup]
AppName=DisksInfo
VersionInfoVersion=5.0
AppVerName=DisksInfo
DefaultDirName={pf}\My program
EnableDirDoesntExistWarning=false
DefaultGroupName=Programs\Accessories

[Icons]
Name: {group}\Notepad; Filename: notepad.exe

[Code]
var
StartMenuTreeView : TStartMenuFolderTreeView;

Procedure ObjectOnClick(Sender: TObject);
Begin
case TObject(Sender) of
StartMenuTreeView: if StartMenuTreeView.Directory <> '' then WizardForm.GroupEdit.Text := StartMenuTreeView.Directory else WizardForm.GroupEdit.Text:= '{#SetupSetting("DefaultGroupName")}'
WizardForm.NoIconsCheck: begin WizardForm.GroupEdit.Enabled:= not(WizardForm.GroupEdit.Enabled); StartMenuTreeView.Enabled:= WizardForm.GroupEdit.Enabled; WizardForm.GroupBrowseButton.Enabled:= WizardForm.GroupEdit.Enabled end;
end; End;


Procedure InitializeWizard;
begin
WizardForm.NoIconsCheck.SetBounds(WizardForm.DiskSpaceLabel.Left + 96, WizardForm.DiskSpaceLabel.Top + 1, WizardForm.NoIconsCheck.Width, WizardForm.NoIconsCheck.Height)
WizardForm.NoIconsCheck.OnClick:= @ObjectOnClick
WizardForm.NoIconsCheck.Parent:= WizardForm.SelectProgramGroupPage
WizardForm.NoIconsCheck.Show

StartMenuTreeView := TStartMenuFolderTreeView.Create(WizardForm)
with StartMenuTreeView do
begin
SetPaths(ExpandConstant('{userprograms}'), ExpandConstant('{commonprograms}'), ExpandConstant('{userstartup}'), ExpandConstant('{commonstartup}'));
SetBounds(ScaleX(0), ScaleY(110), ScaleX(400), ScaleY(100))
Parent:= WizardForm.SelectProgramGroupPage
Cursor:= crHand
OnChange:=@ObjectOnClick
end;

StartMenuTreeView.ChangeDirectory(ExpandConstant('{userprograms}\Programs\Accessories'), True);
end;

t16bz
16-07-2012, 13:43
Johny777, а как еще можно сделать чтоб остальные директории сворачивались?

AndreY33_80
16-07-2012, 16:39
Здраствуйте. Скажите пожалуйста, как можно убрать диалог создания ярлыка при установке ?

AndreY33_80
16-07-2012, 16:43
на всякий случай привожу скрипт


[Setup]

AppId={{639F03DD-4D24-4F21-9960-58D7944DAE91}
AppName=CCleaner
AppVersion=3.16
;AppVerName=CCleaner 3.16
DefaultDirName={pf}\CCleaner
DefaultGroupName=CCleaner
DisableDirPage=yes
DisableProgramGroupPage=yes
ShowLanguageDialog=no
DisableReadyPage=yes
DisableFinishedPage=yes
OutputBaseFilename=CCleaner
Compression=lzma/ultra
SolidCompression=yes

[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "C:\Program Files\CCleaner\CCleaner.exe"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Program Files\CCleaner\CCleaner.exe"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Program Files\CCleaner\ccleaner.ini"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Program Files\CCleaner\uninst.exe"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\Program Files\CCleaner\winapp2.ini"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

[Icons]
Name: "{group}\CCleaner"; Filename: "{app}\CCleaner.exe"

[Code]
procedure CurPageChanged(CurPageID: Integer);
begin
If CurPageID=wpWelcome then
begin
SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
end;
end;

alert30
16-07-2012, 16:45
AndreY33_80, скрипт под спойлер, а по поводу убрания ярлыка на Рабочем столе; удалите:
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked »

AndreY33_80
16-07-2012, 17:10
Прошу прощения, но я не совсем это имел в виду. Мне как раз нужно, чтобы ярлык на рабочем столе создавался. Но хотелось бы, чтобы при установке программы не нужно было бы ставить галочку наспротив надписи " Создать значёк на рабочем столе "

alert30
16-07-2012, 17:15
AndreY33_80, автоматом, да, без выбора?

AndreY33_80
16-07-2012, 17:15
Совершенно верно




© OSzone.net 2001-2012