Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 5]
Edison007
31-05-2012, 20:18
такое возможно сделать только в юникодной версии Inno. »
Можно и на анси с использованием WinTB (http://rghost.ru/37839026)
Dark_Delphin
31-05-2012, 20:24
Всем привет.
Подскажите как правильно прописать строку, чтобы файл устанавливался в Мои документы...
Вроде {commondocs} или по другому?
Заранее спасибо.
Raf-9600
31-05-2012, 20:42
Можно и на анси с использованием WinTB »
А вы можете это реализовать? Там только нужен прогресс-бар, без всяких кнопок и прочего.
Просто наличие прогресс-бара в таскбаре это единственное что отделяет код El Sanchez от совершенства http://i25.fastpic.ru/big/2011/0719/8f/09300ddfe3350a8d59a9bb4477c6148f.gif
Покапался в хэлпе и не нашёл, что то, какой флаг отвечает за установленную галочку чекбокса, по умолчанию, но можно было снять?
Raf-9600
31-05-2012, 23:49
ToCamoe,
Name: "Text"; Description: "Text"; Types: full
ToCamoe,
Код:
Name: "Text"; Description: "Text"; Types: full »
мне для
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
такого флага )
Johny777
01-06-2012, 00:00
чтобы файл устанавливался в Мои документы... »
{userdocs} - документы текущего пользователя (используй этот)
{commondocs} - общие документы
какой флаг отвечает за установленную галочку чекбокса, по умолчанию »
для секции компонентов удали типы (например Types: full compact) у тех компонентов (дочерних) которые не должны быть отмечены
для секции задач используй флаг unchecked для неотмеченных по умолчанию
а можно через код (для компонентов)
так:
[Setup]
AppName=Test Mouse Event
AppVersion=1.5
DefaultDirName={pf}\My Application
SolidCompression=yes
Compression=none
PrivilegesRequired=none
OutputDir=userdocs:Inno Setup Examples Output
[Components]
Name: a; Description: описание a
Name: b; Description: описание b
Name: c; Description: описание c
[ Code]
procedure InitializeWizard();
begin
WizardForm.ComponentsList.Checked[2] := True; /// отсчёт от нуля // выбран компонет С (третий)
end;
Raf-9600
01-06-2012, 00:01
ToCamoe, Может если убрать Flags: unchecked то галочка по умолчанию будет? По крайней мере у меня так.
GoshaPolo
01-06-2012, 12:20
Ответьте на вопросик, может немножко не по теме, но я думаю ответ найдется :)
Мне нужно прописать ключ в реестр, который у меня записывается по такому пути - HKEY_USERS\S-1-5-21-4202093143-4282819894-987643330-1006\Software\
Так вот вопрос в том, на всех ли других компьютерах будет такая же папка S-1-5-21-4202093143-4282819894-987643330-1006 в реестре или это какое-то индивидуальное обозначение пользователя? Как тогда прописать в такую папку, если у каждой системы эта папка различна?
Johny777
01-06-2012, 16:59
скажите пожалуйста
в этом нет ничего неправильного?
procedure CurStepChanged(CurStep: TSetupStep);
begin
case CurStep of
ssPostInstall :
begin
case TNewCheckBox(Sender) of
hl2_icon_Checkbox :
...
end;
end;
в case идёт ещё один case
и в этом
procedure make (Sender: TObject);
begin
case TNewCheckBox(Sender) of
hl2_main_CheckBox :
begin
...
case TNewRadioButton(Sender) of
...
case TNewButton(Sender) of
//// всё это в одной процедуре (кнопка, переключатели, чекбоксы)
end;
и вообще записывать через case правильнее (с точки зрения оптимизации)?
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
также открыл для себя .Free
у меня много текста и картинок в скроллбоксе на второй странице
при запуске процесс инсталла кушает 43 мб оперативы
во время установки 100
на шаге ssInstall освободил скроллбокс
*(скроллбокс.Free)
теперь во время установки чуть больше 50-ти :)
GoshaPolo,
Извини
реестр для меня тёмный лес с чудовищами
GoshaPolo
01-06-2012, 19:50
На мой вопрос выше никто ответа не знает?
Raf-9600
01-06-2012, 20:03
GoshaPolo, если не ошибаюсь, нужно писать Root: HKCU; и без S-1-5-21-4202093143-4282819894-987643330-1006
GoshaPolo
01-06-2012, 20:41
Raf-9600, писал так, но при установке выдает ошибку, что не может прописать по такому пути :(
R.i.m.s.k.y.
01-06-2012, 21:20
Поделитесь пожалуйста алгоритмом сравнения нужной версии файла 50.6 через GetVersionNumbers(FilePath, VersionMSFile, VersionLSFile);
Причем VersionMSFile деятичный, а VersionLSFile - шестандцатеричный (т.е. msgbox показывает 50 327680 соответственно)
Заранее спасибо!
Sanshalay
01-06-2012, 22:32
Помогите пожалуйста убрать страницы "Меню пуск" и "Компоненты" правильно. Как не убираю, вылазит рантайм. Буду очень благодарен
Скрипт: http://clck.ru/d/zxAyJVzi19yFX
GoshaPolo
01-06-2012, 23:26
Sanshalay, мне тут выше отвечали на такой же вопрос :)
Вот ответ: [Setup]
DisableSelectComponentsPage=yes
DisableSelectProgramGroupPage=yes
Sanshalay
01-06-2012, 23:44
GoshaPolo, ошибка вылазит:
Unrecognized [Setup] section directive "DisableSelectComponentsPage"
в этом нет ничего неправильного? »
всё правильно
и вообще записывать через case правильнее (с точки зрения оптимизации)? »
Вопрос поставлен не верно, писать через case... или через if..., это скорее всего привычка написания, ну или кому как легче читать код. Конечно это только можно отнести только если использовать только одну проверку т.е. if ... then ... else, если таких проверок более двух, то удобнее на мой взгляд через case...
На мой вопрос выше никто ответа не знает? »
HKCU\Software\...
Поделитесь пожалуйста алгоритмом сравнения нужной версии файла 50.6 через GetVersionNumbers »
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.
Compression=lzma2/ultra64
InternalCompressLevel=ultra64
SolidCompression=yes
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl
[Code]
function InitializeSetup(): Boolean;
var
VersionMS, VersionLS: Cardinal;
begin
if GetVersionNumbers(ExpandConstant('{sys}\shell32.dll'), VersionMS, VersionLS) then
MsgBox(IntToStr(VersionMS shr 16) + '.' +
IntToStr(VersionMS and $FFFF) + '.' +
IntToStr(VersionLS shr 16) + '.' +
IntToStr(VersionLS and $FFFF),
mbInformation, MB_OK);
end;
Gnom_aka_Lexander
02-06-2012, 00:00
это скорее всего привычка написания, ну или кому как легче читать код. »
Внесу свою лепту, так сказать :)
Через case удобно и оптимально проверять сранение двух переменных, когда:
1) одну определенную переменную нужно сравнить с несколькими другими, и в зависимости от того, какой из других она равна - совершить соответствующее действие
2) когда одну переменную нужно сравнить с несколькими другими и совершить в нескольких случаях одно и тоже действие.
В обоих этих случаях плюсы ощутимы - начиная от читаемости кода, заканчивая его оптимальностью. но в плане оптимальности, нужно помнить - case of работает до первого положительного ответа. как только получен ответ - да, выполнение структуры прерывается, и если это недопустимо, то тут без вариантов - if...then...else...
GoshaPolo
02-06-2012, 00:16
Sanshalay, со страницей компонентов у меня тоже такой способ не прокатил :(
Вот такой вариант 100% получится. Пропиши эту функцию в секцию CODE
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if PageID = 7 then Result:= True;
if PageID = 8 then Result:= True;
end;
7 и 8 это ID страниц. Вот список всех страниц:
wpWelcome = 1;
wpLicense = 2;
wpPassword = 3;
wpInfoBefore = 4;
wpUserInfo = 5;
wpSelectDir = 6;
wpSelectComponents = 7;
wpSelectProgramGroup = 8;
wpSelectTasks = 9;
wpReady = 10;
wpPreparing = 11;
wpInstalling = 12;
wpInfoAfter = 13;
wpFinished = 14;
Serega, в том то и дело, что там не CURRENT USER, а в простой USERS надо записать. Если HKU\SOFTWARE прописывать, то выдает ошибку при установке, что записать такую строку не может в реестр. Или разницы нету между CURRENT USER и этой строкой в USERS? Но почему тогда они разделены на разные разделы?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.