Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: nik1967
Дата сообщения: 02.08.2013 10:23

Цитата:
Люди, скажите как закомментировать/раскомментировать кусок(несколько строк сразу) кода

Либо
Код: {нужный кусок кода}
Автор: sjwrec
Дата сообщения: 02.08.2013 11:00
От себя добавлю что знаками { } можно закомментировать только если в строках не содержатся константы
например {app} - иначе будет закомментирована только часть строки, а не несколько строк.

Второй вариант очень хороший, знаки (* *) - сам ими часто пользуюсь.

Самый простой вариант закомментирования, знаки // - если строк не очень много. Применяется в начале каждой строки.
Автор: Daniyar91
Дата сообщения: 02.08.2013 11:30
nik1967 и sjwrec, судя по-тому, что писал вроде-как самостоятельный и не ленивый 999Kay666 - ему нужно быстрое рас/комментирование, а непростое.

Возможность быстрого комментирования имеется наверное в каждом втором редакторе, но зачем использовать второй - когда есть 1
Автор: sjwrec
Дата сообщения: 02.08.2013 12:01
Daniyar91
Возможно Вы правы насчёт каждого второго, но Inno в их число не входит. А тот человек не самостоятельный и ленивый - раз не может поискать в поиске возможности Inno. Прежде чем задавать вопрос.
Автор: 999Kay666
Дата сообщения: 02.08.2013 21:16
SotM

Цитата:
потролить решил

нет это не по моей части.

На форуме, этом, когда-то мне помогали парни под никами Генри и Юршат. И кто-то из них (вроде Юршат) сказал мне комбинацию клавиш (выделяешь кусок кода, жмешь комбинацию, и вначале каждой строки ставится ";") . Т.е. я этим пользовался, а сейчас не могу вспомнить. Всё перепробовал - может дело в версии?

nik1967
спасибо, но не то имел ввиду
Автор: Genri
Дата сообщения: 03.08.2013 01:05

Цитата:
когда-то мне помогали парни под никами Генри и Юршат. И кто-то из них (вроде Юршат) сказал мне комбинацию клавиш
-- во всяком случае - это точно был не я
Но раз такое дело, попробую прояснить ситуацию: как тут уже говорили - все зависит от используемого редактора. Сам компилятор инно, таким функционалом не обладает и насколько мне известно - никогда не обладал. Но когда-то давным-давно, в составе QuickStart Pack вместе с инно поставлялся редактор ISTool. Так вот ISTool нечто подобное имел. Правда это были не горячие клавиши, а пункт в меню.
С версии 5.3.11, в состав QuickStart Pack вместо ISTool вошел InnoIDE, который не имел таких возможностей (впрочем, я им не пользовался - могу не знать).
Но начиная с версии 5.5.3, в составе QuickStart Pack опять произошла замена. Теперь туда вместо InnoIDE входит Inno Script Studio. И этот редактор уже имеет и соответствующий пункт в меню (Toggle Comment) и горячую комбинацию (Ctrl+Q).

Вот такой вот экскурс в историю
Автор: 999Kay666
Дата сообщения: 03.08.2013 01:52
Genri
спасибо. ясно
Автор: sergey3695
Дата сообщения: 03.08.2013 20:53

Цитата:
Меня, в частности, интересует "закомментировать/раскомментировать кусок(несколько строк сразу) кода".

Скажем нам нужны компаненты,но сейчас не требуются делаем так:
#define Components (в начале секции [Setup] (я так делаю))
Указываем каким куском кода управлять
#ifdef Components
тут кусок кода
#endif
-----
;#define Components (закомментировано -> куска как бы для компиляции нет)
-----
#ifdef Components
#else
тут кусок кода который будет если закомментировано #define Components
#endif

Ты про это? Если нет,то незнаю.
-----
(* аналогичен знаку {
Автор: sjwrec
Дата сообщения: 03.08.2013 21:07
sergey3695
Нет 999Kay666 имел в виду другое, вот Genri грамотно всё разъяснил.

всем
Я уже почти закончил свой модульный скрипт 6.1, на днях представлю его здесь со скринами и всеми исходниками. Сегодня проверял Модуль проверки версии DirectX видеокарты и системы. Результатом пока доволен

Автор: sergey3695
Дата сообщения: 03.08.2013 21:11
sjwrec я даже прочитав то что выше как-то непонил что нужно было. Че-то какие-то горячие клавиши об которые обжигаешься и все что ли.
Всем
Если у кого нибудь возможность на хрюше протестить этот setup.exe
Автор: sjwrec
Дата сообщения: 04.08.2013 12:49
sergey3695
Результат теста на XP. При нажатии Установить чёрный инсталл без ничего - лечится сворачиванием и затем разворачиванием окна инсталла.
На странице Завершение. Форма инсталла распадается на два отдельных окна.

Скажите какой какой библиотекой у Вас показывается видео.
Автор: sergey3695
Дата сообщения: 04.08.2013 13:42

Цитата:
Скажите какой какой библиотекой у Вас показывается видео.

function mciSendString(lpstrCommand, lpstrReturnString: PChar; uReturnLength, hWndCallback: Integer): Integer; external 'mciSendStringA@winmm stdcall delayload';

Цитата:
При нажатии Установить чёрный инсталл без ничего

Странное дело,с автораном то все ок.

Цитата:
Форма инсталла распадается на два отдельных окна.

И не убирается сразу или что?
xp какая (sp?)? (на xp sp3 было все ок) и если не затруднит можешь сделать скрины этого безобразия и в личку кинуть? (так и знал что с хрюшей проблемы будут..ппффф..)
Автор: sjwrec
Дата сообщения: 04.08.2013 18:48
sergey3695

Цитата:
function mciSendString(lpstrCommand, lpstrReturnString: PChar; uReturnLength, hWndCallback: Integer): Integer; external 'mciSendStringA@winmm stdcall delayload';


Спасибо. Можно было просто написать что сделано средствами MCI.
Ясно мне это, у меня на этом сделана и фоновая музыка и звуки кнопок и видео с возможностью перемотки и.т.д.

Единственное только мне пока не понятно как поверх видео, отрисовывать лабелы и прочее. Может поделитесь примером?
Автор: sergey3695
Дата сообщения: 04.08.2013 19:32

Цитата:
Может поделитесь примером?

в лс.
Автор: sjwrec
Дата сообщения: 04.08.2013 20:49
Новый модульный скрипт v6.1




Скрины(Скин Светлый) 3.4 МБ

[more=Что нового]
В модульном скрипте версии 6.1 произошли не только графические изменения,
но и достаточно сильно изменён функционал:

1. Видео не закрывается, а сворачивается в специальное поле в окне инсталла.
2. Наконец то удалось добавить проверку версий DirectX как видеокарты, так и системы.
Правда теперь перед запуском инсталла вылазит логотип GPU-Z.
3. Дополнительные данные о видеокарте.
Нужно навести указатель мыши на синее слово Видеокарта и хинт покажет Вам её дополнительные данные.
4. Сворачивание и разворачивание Меню "О программе"
5. Сделал статусные индикаторы кликабельными.
6. Два скина на выбор, один Светлый, другой Тёмный.
7. Уровень прозрачности инсталла теперь настраивается в главном модуле.
8. На странице Выбор пути установки. Теперь при нажатии Далее (>)
будет выдаваться сообщение о несоответствии системных требований.
9. Мелкие исправления несовместимости модулей.
10. Пытался не допускать граматических ошибок. Но скорее всего они есть

Возможно не все возможности описал.
Извините я так долго его дорабатывал и переделывал что могу уже чего и не вспомнить
[/more]

Скрипт работает в версии Inno Setup Compiler 5.5.1.ee1. (a) (build 121216)
Работа проверялась на системах: XP SP2 x86 / WIN 7 NOSP x86

Скачать 11.8 МБ
Автор: Black_Ghost
Дата сообщения: 04.08.2013 23:29
sjwrec
у меня тестовый сетап не работает. выдает ошибку после лого GPU-Z.
Можно ли отключить 2-й пункт из нововведений?
Автор: mdid
Дата сообщения: 05.08.2013 14:52
Драсте, подскажите плиз такую штуку. На прошлом проекте инсталляха работала. Программа коннектилась к бахе, стягивала обнову и с ключом silent происходила обнова. Ща, не понятно чего, после запуска, она или обновляет прогу, либо просто закрывается. Есть идеи в чем может быть причина? Вот, только что, убрал ключ silent, и прога запустилась, а с ключом, через раз просто закрывается, не производя обновлений.
Автор: sjwrec
Дата сообщения: 05.08.2013 20:17
Black_Ghost


Цитата:
выдает ошибку после лого GPU-Z.

Какую имено ошибку?


Цитата:
Можно ли отключить 2-й пункт из нововведений?


Закомментируйте строку #define SysTestModul в Setup.iss.
И проверьте если ошибка снова появится.
Значит причина не в этом модуле.
Автор: 999Kay666
Дата сообщения: 05.08.2013 20:35
всем привет!
нужен был код: если не выбран не один компонент - кнопка установить не активна.
поискав на форуме нашел 4(!) кода, но не один не подошел, т.к. в моём инсталляторе лишь одна страница
вот найденные:

Код:
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result:= True;
if WizardSelectedComponents(False) = '' then
begin
MsgBox('Не выбран ни один компонент!', mbInformation, MB_OK);
Result:= False;
end;
end;

procedure ComponentOnClick(Sender: TObject);
begin
if WizardSelectedComponents(False) = '' then
WizardForm.NextButton.Enabled:= False
else WizardForm.NextButton.Enabled:= True;
end;

procedure InitializeWizard();
begin
WizardForm.ComponentsList.OnClick := @ComponentOnClick;
end;

{ 1-ый вариант }
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result:= True;
if CurPageID = wpSelectComponents then
if WizardSelectedComponents(False) = '' then begin
MsgBox('Ни один из компонентов не выбран!', mbInformation, MB_OK);
Result:= False;
end;
end;

{ 2-ой вариант }
//procedure OnClick(Sender: TObject);
//begin
// if WizardForm.ComponentsList.Checked[0] = True then
// WizardForm.NextButton.Enabled:= True else WizardForm.NextButton.Enabled:= False;
//end;

//procedure InitializeWizard;
//begin
// WizardForm.ComponentsList.OnClickCheck:= @OnClick;
//end;
Автор: sjwrec
Дата сообщения: 05.08.2013 21:12
Вот, но он мной не проверялся. Блин только щас заметил procedure CurPageChanged - исправил.


Код:

procedure OnClick(Sender: TObject);
begin
if WizardForm.ComponentsList.Checked[0] = True then
WizardForm.NextButton.Enabled:= True else WizardForm.NextButton.Enabled:= False;
end;

procedure InitializeWizard;
begin
WizardForm.ComponentsList.OnClickCheck:= @OnClick;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpSelectComponents then
begin
if WizardForm.ComponentsList.Checked[0] = True then
begin
WizardForm.NextButton.Enabled:= True;
end
else
begin
WizardForm.NextButton.Enabled:= False;
end;
end;
end;
end;
end;
end;
Автор: 999Kay666
Дата сообщения: 05.08.2013 21:43
sjwrec
жаль, но та же история:

Цитата:
... тот, что с процедурой делает кнопку не активной, но только если сначала выбрать компонент, а потом снять галку



спасибо громаднейшее....

вот как получилось
if CurPageID=wpSelectDir

ничего не пойму - работает только на первом компоненте. остальные игнорирует

[more]
[_Setup]
AppName=Mafia Mod
AppVerName=0.0
DefaultDirName={sd}\MafiaGame
DisableFinishedPage=yes
Uninstallable=no
UninstallDisplayName=no
DirExistsWarning=no

[_Components]
Name: textures; Description: Mod; Types: ; Flags:
Name: textures; Description: Mod; Types: ; Flags:
Name: textures; Description: Mod; Types: ; Flags:

[_Code]
///// процедура для деактивации кнопки "Установить", если не выбран ни один компонент
procedure OnClick(Sender: TObject);
begin
if WizardForm.ComponentsList.Checked[0] = True then
WizardForm.NextButton.Enabled:= True else WizardForm.NextButton.Enabled:= False;
end;
////////////////////////////////////////////изменить имя кнопки NextButton
procedure CurPageChanged(CurPageID: Integer);
begin
If WizardForm.FindComponent('NextButton') is TButton
then
TButton(WizardForm.FindComponent('NextButton')).Caption:='установить';
///// для процедуры деактивации кнопки "Установить"
begin
if CurPageID=wpSelectDir then
begin
if WizardForm.ComponentsList.Checked[0] = true then
begin
WizardForm.NextButton.Enabled:= True;
end
else
begin
WizardForm.NextButton.Enabled:= False;
end;
end;
end;
end;

procedure InitializeWizard();
///// для процедуры деактивации кнопки "Установить"
begin
WizardForm.ComponentsList.OnClickCheck:= @OnClick;
///// построение единственного окна инсталлятора
WizardForm.Caption :='Mafia: The City of Lost Heaven. Собрание модов.'
WizardForm.SelectDirBitmapImage.Hide;
WizardForm.SelectDirLabel.Hide;
WizardForm.SelectDirBrowseLabel.Hide;
WizardForm.DiskSpaceLabel.Hide;
WizardForm.DirEdit.Top := ScaleY(0);
WizardForm.DirBrowseButton.Top := ScaleY(0);
WizardForm.ComponentsList.Top := ScaleY(30);
WizardForm.ComponentsList.Height := ScaleY(195);
WizardForm.ComponentsList.Parent := WizardForm.SelectDirPage;
end;

// пропуск страниц инсталлятора
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID = 1) or (PageID = 7) or(PageID = 10) then
Result:= True;
end;
[/more]
подскажите почему?

после пару часов эксперимента: кажется здесь чего-то не хватает:
if WizardForm.ComponentsList.Checked[0] = True then
WizardForm.NextButton.Enabled:= True else WizardForm.NextButton.Enabled:= False;
Автор: sjwrec
Дата сообщения: 05.08.2013 21:46
999Kay666
Вы исправленный код проверяли?

Добавлено:
Да и ещё в строке WizardForm.ComponentsList.Checked[0] - ноль указывает что проверяется первый компонент. Остальные компоненты будут под номерами с 1.
Автор: 999Kay666
Дата сообщения: 05.08.2013 21:52
sjwrec
спасибо огромнейшее......

получилось вот как:
if CurPageID=wpSelectDir
Автор: AlexM2222
Дата сообщения: 05.08.2013 21:58
Здравствуйте!
Возникла необходимость перепаковать один Inno Setup инсталлятор под себя, вроде всё получилось кроме не знаю как организовать(прописать в скрипте) подхват своих настроек из settings.reg, если таковой имеется в папке с инсталлятором. Если такое где-то было, просьба не ругать а ткнуть носом Заранее спасибо!!!

делаю так не подхватывается

[Run]
Filename: "{win}\regedit.exe"; Parameters: "-s {src}\Settings.reg"; WorkingDir: "{src}"; StatusMsg: "Внесение настроек в реестр...";
Автор: sjwrec
Дата сообщения: 05.08.2013 22:05
AlexM2222
Из шапки скачайте утилиту "Converter REG to Inno Setup"
Она превратит ваш Settings.reg в Settings.iss. Оттуда скопируйте всё в Ваш скрипт.
Автор: AlexM2222
Дата сообщения: 05.08.2013 22:34

Цитата:
Из шапки скачайте утилиту "Converter REG to Inno Setup"

спасибо, но мне нужен именно такой вариант

Цитата:
подхват своих настроек из settings.reg, если таковой имеется в папке с инсталлятором


Автор: sjwrec
Дата сообщения: 05.08.2013 22:41
AlexM2222
Куда Вам нужно сделать подхват?

1. Из файла Settings.reg - В систему с помощью InnoSetup.
2. Из файла Settings.reg - В InnoSetup для дальнейшей его модификации.
3. Из системы в файл Settings.reg - с помощью InnoSetup.
Автор: 999Kay666
Дата сообщения: 06.08.2013 00:08
sjwrec
жаль, но та же история:

Цитата:
... тот, что с процедурой делает кнопку не активной, но только если сначала выбрать компонент, а потом снять галку



спасибо громаднейшее....

вот как получилось
if CurPageID=wpSelectDir

ничего не пойму - работает только на первом компоненте. остальные игнорирует

[more]
[_Setup]
AppName=Mafia Mod
AppVerName=0.0
DefaultDirName={sd}\MafiaGame
DisableFinishedPage=yes
Uninstallable=no
UninstallDisplayName=no
DirExistsWarning=no

[_Components]
Name: textures; Description: Mod; Types: ; Flags:
Name: textures; Description: Mod; Types: ; Flags:
Name: textures; Description: Mod; Types: ; Flags:

[_Code]
///// процедура для деактивации кнопки "Установить", если не выбран ни один компонент
procedure OnClick(Sender: TObject);
begin
if WizardForm.ComponentsList.Checked[0] = True then
WizardForm.NextButton.Enabled:= True else WizardForm.NextButton.Enabled:= False;
end;
////////////////////////////////////////////изменить имя кнопки NextButton
procedure CurPageChanged(CurPageID: Integer);
begin
If WizardForm.FindComponent('NextButton') is TButton
then
TButton(WizardForm.FindComponent('NextButton')).Caption:='установить';
///// для процедуры деактивации кнопки "Установить"
begin
if CurPageID=wpSelectDir then
begin
if WizardForm.ComponentsList.Checked[0] = true then
begin
WizardForm.NextButton.Enabled:= True;
end
else
begin
WizardForm.NextButton.Enabled:= False;
end;
end;
end;
end;

procedure InitializeWizard();
///// для процедуры деактивации кнопки "Установить"
begin
WizardForm.ComponentsList.OnClickCheck:= @OnClick;
///// построение единственного окна инсталлятора
WizardForm.Caption :='Mafia: The City of Lost Heaven. Собрание модов.'
WizardForm.SelectDirBitmapImage.Hide;
WizardForm.SelectDirLabel.Hide;
WizardForm.SelectDirBrowseLabel.Hide;
WizardForm.DiskSpaceLabel.Hide;
WizardForm.DirEdit.Top := ScaleY(0);
WizardForm.DirBrowseButton.Top := ScaleY(0);
WizardForm.ComponentsList.Top := ScaleY(30);
WizardForm.ComponentsList.Height := ScaleY(195);
WizardForm.ComponentsList.Parent := WizardForm.SelectDirPage;
end;

// пропуск страниц инсталлятора
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID = 1) or (PageID = 7) or(PageID = 10) then
Result:= True;
end;
[/more]
подскажите почему?

Добавлено:
sjwrec

Цитата:
Да и ещё в строке WizardForm.ComponentsList.Checked[0] - ноль указывает что проверяется первый компонент. Остальные компоненты будут под номерами с 1.

но как их(Остальные компоненты) добавить.... ничего не получается
Автор: AlexM2222
Дата сообщения: 06.08.2013 06:03
sjwrec, нужно сделать
1. Из файла Settings.reg - В систему с помощью InnoSetup...
Автор: sjwrec
Дата сообщения: 06.08.2013 06:28

Цитата:
но как их(Остальные компоненты) добавить.... ничего не получается


Есть способ тупой, но у меня раньше работал.

Код:
if WizardForm.ComponentsList.Checked[0] = True
or
WizardForm.ComponentsList.Checked[1] = True
or
WizardForm.ComponentsList.Checked[2] = True
// и.т.д ...
then
WizardForm.NextButton.Enabled:= True else WizardForm.NextButton.Enabled:= False;
end;

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177

Предыдущая тема: поиск


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.