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

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

Автор: EDIK3472
Дата сообщения: 19.11.2011 07:57
Ответе на вопрос плиз http://forum.ru-board.com/topic.cgi?forum=5&topic=30239&start=2780
Автор: Raf_SE
Дата сообщения: 19.11.2011 13:59
Ктонить может помочь с ещё одной проблемкой? Нужен скрипт, который бы при выборе компонента Game\Full, автоматически ставил птичку у компонента Text
Автор: AtariUser
Дата сообщения: 19.11.2011 14:30
Raf_SE,

Так

Код:
[Setup]
AppName=MyAppName
AppVerName=AppVerName
DefaultDirName={pf}\The Elder Scrolls V - Skyrim

[Components]
Name: GameFull; Description: Game\Full;
Name: GameFull\Text; Description: Text;

[Types]
Name: Full; Description: Full; Flags: IsCustom;
Автор: troyan90
Дата сообщения: 19.11.2011 14:43
Raf_SE
[more]
Код: [_Components]
Name: "Game"; Description: "Files";
Name: "Game\Full"; Description: "All Files";
Name: "Text"; Description: "Text Files";

[_code]
procedure ComponentsListOnClickCheck(Sender: TObject);
begin
if wizardform.ComponentsList.Checked[1] then
wizardform.ComponentsList.Checked[2]:=true;
end;

procedure InitializeWizard();
begin
wizardform.ComponentsList.OnClickCheck:=@ComponentsListOnClickCheck
end;
Автор: Devils_Night
Дата сообщения: 19.11.2011 17:23
Интересует вот что, лежит например на сервере одна версия, например 1.2, которая на диске например 0.9, можно ли как нибудь к инсталятору прикрутить кнопку "проверить версию", например по VersionInfoVersion или VersionInfoTextVersion, да и вообше возможно ли?

И ещё кое что, как установить дополнительную программу перед основной установкой/распаковкой программы, объясняется всё просто, в моём случае это будет драйвер, поясню, если я в секцию run пропишу запуск установки драйвера, то он естественно устанавливается после основной программы, если установка происходит так, то драйвер не устанавливается как положено, т.е потом всё равно приходится удалять, и ставить по новой, если же я ставлю сначала драйвер, а потом ПО, то установка происходит нормально.
Автор: Raf_SE
Дата сообщения: 19.11.2011 19:49
AtariUser
Это немного не то

troyan90
Огромное Спасибо!
Автор: TaTTDoGG
Дата сообщения: 20.11.2011 12:17
нашел функцию добавления ярлыков в taskband в win7 (панель с ярлыками возле кнопки пуск)

Код:
const
LOAD_LIBRARY_AS_DATAFILE = $2;

function LoadLibraryEx(lpFileName: String; hFile: THandle; dwFlags: DWORD): THandle;
external 'LoadLibraryExA@kernel32.dll stdcall';
function LoadString(hInstance: THandle; uID: SmallInt; var lpBuffer: Byte; nBufferMax: Integer): Integer;
external 'LoadStringA@user32.dll stdcall';

function PinToTaskbarWin7(Filename: String): Boolean;
var
hInst: THandle;
buf: array [0..255] of byte;
i: byte;
strVerb, s: String;
objShell, colverbs: Variant;
begin
if not FileExists(Filename) then Exit;
if (GetWindowsVersion shr 24 = 6) and ((GetWindowsVersion shr 16) and $FF = 1) then
begin
hInst := LoadLibraryEx(ExpandConstant('{sys}\shell32.dll'), 0, LOAD_LIBRARY_AS_DATAFILE);
for i := 0 to LoadString(hInst, 5386, buf[0], 255)-1 do strVerb := strVerb + Chr(Buf[i]);
FreeDLL(hInst);
try
objShell := CreateOleObject('Shell.Application');
except
ShowExceptionMessage;
Exit;
end;
colVerbs := objShell.Namespace(ExtractFileDir(Filename)).ParseName(ExtractFileName(Filename)).Verbs;
for i := colVerbs.Count downto 1 do if colVerbs.Item[i].Name = strVerb then
begin
colVerbs.Item[i].DoIt;
Result := True;
end;
end;
end;

procedure InitializeWizard();
begin
if PinToTaskbarWin7('c:\windows\notepad.exe') then
MsgBox('ok', mbInformation, MB_OK)
else
MsgBox('no', mbInformation, MB_OK);
end;
Автор: 321new
Дата сообщения: 20.11.2011 12:46
Ребята, научите плз делать репаки. Хотя бы просто опциональные установщики, в которые можно добавить галочки, типа: Установить ярлык на раб. стол, Установить ярлык на панель быстрого запуска, Установить DirectX, Установить Visual C++ и т.д. а то совсем новичёк в этом деле, почти полный 0
Автор: TaTTDoGG
Дата сообщения: 20.11.2011 13:00

Цитата:
Ребята, научите плз делать репаки. Хотя бы просто опциональные установщики, в которые можно добавить галочки, типа: Установить ярлык на раб. стол, Установить ярлык на панель быстрого запуска, Установить DirectX, Установить Visual C++ и т.д. а то совсем новичёк в этом деле, почти полный 0
начни с использования InnoIDE (скачивается при установке QuickStart Pack отсюда: http://www.jrsoftware.org/isdl.php ). Там графический интерфейс. добавляешь какие надо компоненты, что нужно заносить в реестр и т.д.
а потом оно само по нарастающей пойдет
Автор: AtariUser
Дата сообщения: 20.11.2011 13:35
[Обновление]The Elder Scrolls V: Skyrim

Версия скрипта: 1.1

Описание:
Обновление этого скрипта

Что нового:
- Улучшена страница установки;
- Улучшена финишная страница;
- Теперь кнопка "Отмена" на странице установки отображается нормально;
- Удален лишний неиспользуемый код из скрипта;
- И так, по мелочам;



Добавлена возможность использования скинов!




Скачать:
Ссылка
Автор: TaTTDoGG
Дата сообщения: 20.11.2011 20:23
и ещё вопрос. при перемещении окна, процесс распаковки арк архивов останавливается. отпускаю окно - продолжается
как исправить?

Добавлено:
AtariUser
ваша функция MbOrTb работает не правильно...

вот немного подфиксил:

Код: Function MbOrTb(Byte: Extended): String;
begin
if Byte < 1024 then Result:= NumToStr(Byte) + ' Мб' else
if Byte/1024 < 1024 then Result:= NumToStr(Byte/1024) + ' Гб' else
Result:= NumToStr(Byte/(1024*1024)) + ' Тб'
end;
Автор: CKILL
Дата сообщения: 20.11.2011 22:34
TaTTDoGG
[more=PinToTasckbar.vbs]

Код:
Set objShell = CreateObject("Shell.Application")
set filesystem = CreateObject("scripting.Filesystemobject")
Set objFolder = objShell.Namespace(filesystem.GetParentFolderName(Wscript.Arguments(0)))
Set objFolderItem = objFolder.ParseName(filesystem.GetFileName(WScript.Arguments(0)))
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
If Replace(objVerb.name, "&", "") = "Pin to Taskbar" Then objVerb.DoIt
If Replace(objVerb.name, "&", "") = "Unpin from Taskbar" Then objVerb.DoIt
If Replace(objVerb.name, "&", "") = "Закрепить программу в панели задач" Then objVerb.DoIt
If Replace(objVerb.name, "&", "") = "Изъять программу из панели задач" Then objVerb.DoIt
If Replace(objVerb.name, "&", "") = "Закрепить на панели задач" Then objVerb.DoIt
If Replace(objVerb.name, "&", "") = "Открепить от панели задач" Then objVerb.DoIt
Next
Автор: TaTTDoGG
Дата сообщения: 20.11.2011 22:43
CKILL
спасибо. заработало когда сохранил в 1251 кодировке ))
а через Exec его как-то запустить можно?


Код: Exec(ExpandConstant('{tmp}')+'\PinToTaskbar.vbs', '"{app}\CA.exe"', ExpandConstant('{tmp}'), SW_HIDE, ewWaitUntilTerminated, ResultCode);
Автор: TaTTDoGG
Дата сообщения: 21.11.2011 07:20
Devils_Night по поводу проверки версии. в шапке в доп либах есть dll'ка скачивающая файл с серва. скачал txt с номером последней версии, ну а дальше сам знаешь

теперь по установке драйвера
тебе надо это делать не в секции Run
а в секции Code в следующем обработчике:

Код: procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpInstalling: begin
//тут устанавливаем драйвер
end;
end;
Автор: AtariUser
Дата сообщения: 21.11.2011 16:23

Цитата:
ваша функция MbOrTb работает не правильно...

TaTTDoGG,
Ну почему же? Результат один и тот же, разница лишь в лишнем коде. А так спасибо за замечание.
Автор: fantoma61s
Дата сообщения: 21.11.2011 17:16
Как создать пустую папку не в app, не в pf и т.д., а там где захочет user? Т.е. как перед созданием папки вызвать диалог выбора и создания директории?

Спасибо.
Автор: TaTTDoGG
Дата сообщения: 21.11.2011 20:13
AtariUser
А вот у меня от размера 4043мб ваш код возвращает 3гб. А ведь результат примерно должен быть 3,9гб а это почти 4 )))

Добавлено:
кароч окугление в вашем коде лишнее

Добавлено:
fantoma61s
Так ведь путь можно изменить...или вы хотите чтобы при переходе на страницу выбора папки выскакивало дерево дисков??
Автор: fantoma61s
Дата сообщения: 21.11.2011 20:27

Цитата:
Так ведь путь можно изменить...или вы хотите чтобы при переходе на страницу выбора папки выскакивало дерево дисков??


Да, именно так. Еще я хочу, чтобы можно было не только выбрать, но и создать директорию.
Автор: TaTTDoGG
Дата сообщения: 21.11.2011 20:41
fantoma61s
Дерево дисков можно ортисовать через компонент. А если укажите не существующую папку, то инсталятор сам ее создаст. Код дерева дисков добавлю через пару часов. Я ща просто с телефона пишу

upd: вот код

Код: var
TDV: TFolderTreeView;
TFV: TStartMenuFolderTreeView;

procedure TDVOnChange(Sender: TObject);
begin
WizardForm.DirEdit.Text:= AddBackslash(TDV.Directory)+'{#MyAppName}';
end;

procedure TFVOnChange(Sender: TObject);
begin
WizardForm.GroupEdit.Text:= AddBackslash(TFV.Directory)+'{#MyAppName}';
end;

procedure DisksTree();
begin
TDV:= TFolderTreeView.Create(WizardForm);
TDV.Top:= WizardForm.DirEdit.Top+28;
TDV.Width:= 417;
TDV.Height:= 88;
TDV.OnChange:= @TDVOnChange;
TDV.Parent:= WizardForm.SelectDirPage;

TFV:= TStartMenuFolderTreeView.Create(WizardForm);
TFV.Top:= WizardForm.GroupEdit.Top+28;
TFV.Width:=417;
TFV.Height:= 100;
TFV.SetPaths(ExpandConstant('{userprograms}'),ExpandConstant('{commonprograms}'),ExpandConstant('{userstartup}'),ExpandConstant('{commonstartup}'));
TFV.OnChange:= @TFVOnChange;
TFV.Parent:= WizardForm.SelectProgramGroupPage;
end;
Автор: fantoma61s
Дата сообщения: 21.11.2011 22:18
Большое Вам спасибо. Будем пробовать.
Автор: AtariUser
Дата сообщения: 22.11.2011 17:59
[Обновление]The Elder Scrolls V: Skyrim




Версия скрипта: 1.2

Что нового:
- Изменена страница установки;
- Удален лишний неиспользуемый код;
- Исправлена ошибка при удалении;
- И так, по мелочам;

Старые версии:
- 1.0
- 1.1

Скачать:
Ссылка
Автор: AleSasha
Дата сообщения: 22.11.2011 20:46
Здравствуйте!

Подскажите, пожалуйста, как вместо стандартного текста в ReadyLabel, написать свой текст.

Спасибо всем.
Автор: TaTTDoGG
Дата сообщения: 23.11.2011 07:04

Цитата:
Здравствуйте!

Подскажите, пожалуйста, как вместо стандартного текста в ReadyLabel, написать свой текст.

Спасибо всем.


Код:
[code]
procedure InitializeWizard;
begin
WizardForm.ReadyLabel.Caption:='новый текст';
end;
Автор: Devils_Night
Дата сообщения: 23.11.2011 07:23
TaTTDoGG

Цитата:

Код: procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpInstalling: begin
//тут устанавливаем драйвер
end;
end;
Автор: TaTTDoGG
Дата сообщения: 23.11.2011 09:33

Цитата:
function Exec(const Filename, Params, WorkingDir: String; const ShowCmd: Integer; const Wait: TExecWait; var ResultCode: Integer): Boolean;


Код: procedure CurPageChanged(CurPageID: Integer);
var
n:integer;
begin
case CurPageID of
wpInstalling: begin
Exec(ExpandConstant('{app}/driver.exe'), '',ExpandConstant('{app}'), sw_Hide, ewWaitUntilTerminated, n);
end;
end;
Автор: Devils_Night
Дата сообщения: 23.11.2011 10:15

Цитата:
ps: я тоже не телепат чтобы знать какой вам там драйвер установить надо...
Извиняюсь, я просто не понял что имелось ввиду, сейчас вроде начинаю понимать, если

Код: Exec(ExpandConstant('{app}/driver.exe'), '',ExpandConstant('{app}'), sw_Hide, ewWaitUntilTerminated, n);
Автор: AleSasha
Дата сообщения: 23.11.2011 10:54
Спасибо, уважаемый TaTTDoGG,

но и я так думала, что это поможет, но ничего этот код не изменил:

WizardForm.ReadyLabel.Caption:='новый текст';

Так и осталась надпись:
"Нажмите "Установить", чтобы продолжить"

Для проверки я изменила цвет:

WizardForm.ReadyLabel.Font.Color:=clred;

Цвет поменялся нормально...

Почему текст не меняется, непонятно...

Какие могут быть еще идеи?

Спасибо.
Автор: TaTTDoGG
Дата сообщения: 23.11.2011 11:52
Devils_Night
cs делает тоже самое что вы делаете через реестр. тем более можно потестировать. если будет чот-то не так, то будем думать что делать дальше
Автор: AtariUser
Дата сообщения: 23.11.2011 11:52

Цитата:
А вот у меня от размера 4043мб ваш код возвращает 3гб. А ведь результат примерно должен быть 3,9гб а это почти 4

TaTTDoGG, Не может быть. Решил сравнить оба кода результат у меня получился одинаковый: 3.95 Гб.
Автор: TaTTDoGG
Дата сообщения: 23.11.2011 12:01
AleSasha

Код: [Messages]
russian.ReadyLabel2a=новый текст

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177

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


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