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

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

Автор: braunberg
Дата сообщения: 12.06.2008 18:55
Kutsenko
[Не догнал]
AlexDJ666
Возвращаясь к твоему вопросу о скриншотах с описанием, немного выше есть ссылочка на альтернативный чекбокс. Так вот, что мешает этому чекбоксу иметь размеры твоего скриншота? Т.е. как вариант можно решить это через графику, где одна часть битмапа будет скриншотом, а другая его описанием. И при наведении на скриншот мышкой будет выскакивать его описание в том же поле. Если пойти еще дальше, то вот скрипт часть кода которого можешь попробовать задействовать для своих целей, где описание будет находиться отдельно. К сожалению времени на доводку своих идей я не имею, и написать тебе полностью весь скрипт я не обещаю. И не забудь поблагодарить автора приведенных выше скриптов (2 раза!)
Автор: serg_aka_lain
Дата сообщения: 13.06.2008 08:28
Kutsenko

Цитата:
один ехе файл сделанный через инно запускал другой ехе файл тоже сделанный через инно


Если как в InstallShield'ах ,там если давишь на Setup.msi, то он выдает сообщение что неможно так меня запускать , а токма волею Setup.exe?
-
Такое можно придумать наверное через RunTask KillTask, примитивно , но должно получиться.
Автор: rupo
Дата сообщения: 13.06.2008 10:37
Подскажите как сделать? чтоб при установке программы она сама выбирала путь установки, так как win32 путь c:Program Files а в win64 c:Program Files (x86)
Автор: loginvovchyk
Дата сообщения: 13.06.2008 11:16
Какой параметр задать в сценарии Инно, чтобы программа сама искала папку приложения в случае если программа установлена на другом диске?
Автор: htuos
Дата сообщения: 13.06.2008 13:02
Kutsenko
без параметра "-myparam" не запустится
[more=например так]function InitializeSetup:boolean;
var
i:integer;
begin
Result:=False;
for i:=1 to ParamCount do
if ParamStr(i)='-myparam' then Result:=True;
if not Result then MsgBox('Иди на фиг', mbCriticalError, MB_OK);
end;
[/more]
неужели это так трудно?
Автор: Kutsenko
Дата сообщения: 13.06.2008 13:47
htuos
Спасибо, то что нужно. На вид конечно всё просто когда подобное знаеш, но я в этом не силён(.
Автор: SotM
Дата сообщения: 13.06.2008 20:17
loginvovchyk
Кого и куда искала? Перефразируй фразу, твой вопрос вообще не ясен.

rupo
Т.е.? Ты хоть понял что спросил?
Разве {pf} это не то что нужно?
Автор: elapse
Дата сообщения: 13.06.2008 23:43
rupo, в Вашем случае надо использовать {pf32}. Просто {pf} не подходит, так как в случае win64 директорией установки будет 64-битная Program Files.
Автор: loginvovchyk
Дата сообщения: 14.06.2008 00:24
SotM
Мне нужно обновить файлы приложения. Как помочь установщику определить в какой папке и на каком диске находится приложение. По умолчанию Инно ставит на С:\, а пользователь предположим установил программу на диск D:\.

Как написать сценарий, чтобы установщик сам находил путь к приложению?
Автор: serg_aka_lain
Дата сообщения: 14.06.2008 01:35
loginvovchyk

Путь можно узнать из ключа реестра к проимеру.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Program_is1
"InstallLocation"

DefaultDirName={reg:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Program_is1,InstallLocation|{pf32}\My Program}
Автор: boss911
Дата сообщения: 14.06.2008 04:39
Помогите сделать так, чтобы перед копированием (именно перед этим действием), инсталлятор проверял, есть ли 300Mb свободное места на том разделе жесткого диска, куда ставится приложение. Если заданного свободного объема не найдено, тогда выбивает диалог с соответствующим текстом. А вот дальше, очень бы хотелось, чтобы после нажатия на кнопку "ОК", диалога с репортом о недостаточном месте на жестком диске, перебрасывало на финальную страницу завершения установки.

Прошу указать сразу полный код, в Паскале не тямлю.
Автор: AlexDJ666
Дата сообщения: 14.06.2008 12:38
braunberg, описание-то я уже сделал давно Теперь остался вопрос как сделать при нажатии на скриншот всплывающее окошко с другим скриншотом
Автор: Diawer
Дата сообщения: 14.06.2008 17:11
Помогите решить такую задачу, при выборе save1 (ставиться галочка), что бы она снималась с save2 и соответственно наоборот, то есть одно из двух.

[Tasks]
Name: save1; Description: Сохранять в папку игры; GroupDescription: Игровые сохранения:
Name: save2; Description: Сохранять в «Мои документы»; GroupDescription: Игровые сохранения:; Flags: unchecked

[Files]
Source: app1.ini; DestDir: {app}\data; Flags: ignoreversion recursesubdirs; Tasks: save1
Source: app2.ini; DestDir: {app}\data; Flags: ignoreversion recursesubdirs; Tasks: save2
Автор: boss911
Дата сообщения: 14.06.2008 17:22
Diawer

Цитата:
Помогите решить такую задачу, при выборе save1 (ставиться галочка), что бы она снималась с save2 и соответственно наоборот, то есть одно из двух.

Код: [Tasks]
Name: save1; Description: Сохранять в папку игры; GroupDescription: Игровые сохранения:; Flags: exclusive
Name: save2; Description: Сохранять в «Мои документы»; GroupDescription: Игровые сохранения:; Flags: exclusive unchecked
Автор: elapse
Дата сообщения: 14.06.2008 17:37
boss911, [more=подробнее][no]
[Code]
procedure CurPageChanged(CurPageID: Integer);
var
FreeMB, TotalMB: Cardinal;
begin
if (CurPageID = wpInstalling) and GetSpaceOnDisk(ExpandConstant('{app}'), True, FreeMB, TotalMB) and (FreeMB < 300) then
begin
MsgBox('Недостаточно места на диске. Процесс инсталляции будет прерван.', mbInformation, mb_Ok);
Abort;
end;
end;[/no][/more].
Автор: boss911
Дата сообщения: 14.06.2008 21:06
elapse

Код: MsgBox('Недостаточно места на диске. Процесс инсталляции будет прерван.', mbInformation, mb_Ok);
Автор: elapse
Дата сообщения: 14.06.2008 21:47
boss911, закроется. Отменить установку можно только Abort-ом, насколько я знаю, а он закрывает окно инсталлятора. В предыдущем примере была ошибка, [more=исправил]
procedure CurStepChanged(CurStep: TSetupStep);
var
FreeMB, TotalMB: Cardinal;
begin
if (CurStep = ssInstall) and GetSpaceOnDisk(ExtractFileDrive(ExpandConstant('{app}')) + '\', True, FreeMB, TotalMB) and (FreeMB < 300) then
begin
MsgBox('Недостаточно места на диске. Процесс инсталляции будет прерван.', mbInformation, mb_Ok);
Abort;
end;
end;[/more].
Автор: Diawer
Дата сообщения: 14.06.2008 23:48
boss911, спасибо.



Добавлено:
Уже спрашивал никто не смог ответить, может сейчас кто поможет,
подскажите как присвоить свою иконку файлу unins000.exe,
задача наверное не из лёгких, но если это возможно,
очень выручите.
Автор: boss911
Дата сообщения: 15.06.2008 01:45
elapse

Спасибо, все работает.

Цитата:
Отменить установку можно только Abort-ом, насколько я знаю, а он закрывает окно инсталлятора.

Так я так и не понял, можно как-то сделать, чтобы инсталлятор не закрывался, а переходил на финальную страницу завершения установки?



Diawer

Цитата:
подскажите как присвоить свою иконку файлу unins000.exe

Вопрос конечно интересный, сам когда-то пытался это выяснить, но стандартными средствами нечего не получилось, видимо не предусмотрено. Можно назначить любой значок деинсталляции в "Установка и удаления программ". Что касается значка unins000.exe , тут, наверно, поможет код в Паскале.



ALL

Я что-то не понимаю, так должно быть или как. Смотрите, в моем случае, перед деинсталляцией, запускается приложение. Так вот, если запустить установку поверх того, что уже было установлено с того же самого инсталлятора, допустим раз пять таких повторных установок поверх, то при деинсталляции, запуск приложения произойдет столько раз, сколько повторных установок мы делали. Зачем такой дыбилизм!

Как этого избежать? Просто в моем случае, возможны повторные установки поверх, а двойной запуск приложения перед деинсталляцией, вообще может привести к краху системы. Помогите решить этот дыбилизм.
Автор: braunberg
Дата сообщения: 15.06.2008 01:56
Diawer
вариант
Автор: firefly2005
Дата сообщения: 15.06.2008 03:10

Цитата:
Уже спрашивал никто не смог ответить, может сейчас кто поможет,
подскажите как присвоить свою иконку файлу unins000.exe,
задача наверное не из лёгких, но если это возможно,
очень выручите.


[Setup]
SetupIconFile=setup.ico
// здесь можно указать свою иконку на свой инсталлятор!
UninstallDisplayIcon={sys}\SHELL32.dll,130 // здесь иконка в "Установке и удалении программ"!

[Icons]
Name: {group}\Удалить МОЮ ПРОГРАММУ; Filename: {uninstallexe}; IconFilename: "{sys}\SHELL32.dll"; IconIndex: 137

// здесь иконка для анинсталла которая будет в меню ПУСК

------------------------------
на unins000.exe вешается иконка аналогичная с инсталлятора. если у тебя есть.
если у тебя есть UninstallLogMode, то навесится на unins000.exe иконка следующего инсталлятора.

Я попробовал как то через реестр, может у тебя что получится, попробуй:

Root: HKLM; Subkey: "Software\My"; Flags: uninsdeletekeyifempty
Root: HKLM; Subkey: "SOFTWARE\My"; ValueName: "InstallDir"; ValueType: String; ValueData: "{app}\"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\My"; ValueName: "UninstallString"; ValueType: String; ValueData: "{uninstallexe}"; Flags: uninsdeletekey
Root: HKLM; Subkey: "SOFTWARE\My"; ValueName: "DisplayIcon"; ValueType: String; ValueData: "{app}\my.ico"; Flags: uninsdeletekey

Root: HKLM; Subkey: "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\My"; ValueName: "DisplayIcon"; ValueType: String; ValueData: "{app}\my.ico"; Flags: uninsdeletekey



Добавлено:
braunberg

Цитата:
Diawer
вариант

не понял! Скачал, думал там действительно что стоящее.,а там Инно версии 4.15. Вирусов вроде нет, или эта версия какие то дополнительные функции поддерживает?
Автор: boss911
Дата сообщения: 15.06.2008 04:10
firefly2005

Цитата:
Я попробовал как то через реестр, может у тебя что получится, попробуй

А причем тут вообще реестр, какое отношение он имеет к иконке для файла unins000.exe, который создает инсталлятор?
Автор: serg_aka_lain
Дата сообщения: 15.06.2008 04:13
firefly2005

Цитата:
не понял! Скачал, думал там действительно что стоящее.,а там Инно версии 4.15. Вирусов вроде нет, или эта версия какие то дополнительные функции поддерживает?


В версиях 4.х помнится иконка у деинсталлятора была в виде корзиы, ну как у ХР,
ну и естественно эта версия про новые возможности Inno 5.x знать не знает.
Автор: braunberg
Дата сообщения: 15.06.2008 12:36
firefly2005
1. Я не разносчик заразы.
2. Вовсе не обязательно скачивать все, что тебе дают, тем более, что там черным по серому указана 4-я версия Inno Setup.
3. Если человека кроме смены иконок не интересуют возможности последних версий, то как "вариант" можно попробовать скомпилить в 4-ке. Где безболезненно можно поставить пользовательскую иконку как на Install так и на Uninstall.

[setup]
SetupIconFile=C:\icon.ico - (иконка инсталлятора)
UninstallIconFile=C:\icon2.ico - (иконка деинсталлятора, которая будет отображаться в правом верхнем углу окна 'Процесс удаления')
UninstallDisplayIcon=C:\icon3.ico - (значок для деинсталлятора в диалоге 'Установка и удаление программ' Панели управления)
UninstallStyle=classic – (стиль деинсталлятора)
Автор: Unc1e
Дата сообщения: 15.06.2008 16:18
Пытаюсь создать с помощью Inno текстовый файл в Unicode кодировке. Нашел вот эту статейку, но никак не могу конвертировать ANSI текст в Unicode. Помогите кто соображает в паскале. У меня в проекте есть файл filename.txt вот у него нужно сменить кодировку. Заранее СПАСИБО!
Автор: Snake193
Дата сообщения: 15.06.2008 18:32
Помогите сделать инсталлятор с автозапуском!
Когда запускается Setup.exe, он рисует форму, используя innocallback.



Ресурсы:
Ссылка
Автор: SotM
Дата сообщения: 15.06.2008 18:48
Unc1e
Так у тебя что-то получается или не получается? Начинания есть хоть какие нибудь? Или ты хочешь сразу получить готовый код?!

Snake193
Что-то картинка не отобразилась...
Автор: Snake193
Дата сообщения: 15.06.2008 18:59
Ссылка

в архиве все необходимые рисунки.
Автор: Unc1e
Дата сообщения: 15.06.2008 20:24
SotM, стыдно показывать свои [more=начинания][Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Files]
Source: "filename.txt"; DestDir: "{app}"

[ Code ]
FUNCTION MultiByteToWideChar(CodePage: INTEGER; dwFlags: INTEGER; lpMultiByteStr: STRING; cbMultiByte: INTEGER; VAR lpWideCharStr: STRING; cchWideChar: INTEGER): INTEGER;
EXTERNAL 'MultiByteToWideChar@kernel32.dll stdcall';

FUNCTION WideString(BString: STRING): STRING;
VAR
I: INTEGER;
WString: STRING;
BEGIN
WString:='';
FOR I:=1 TO LENGTH(BString) DO BEGIN
WString:=WString+Copy(BString,I,1)+CHR(0);
END;
WString:=WString+CHR(0)+CHR(0);
RESULT:=WString;
END;

procedure CurStepChanged(CurStep: TSetupStep);
var
S: String;
begin
If CurStep=ssPostInstall then
begin
LoadStringFromFile(ExpandConstant('{app}\filename.txt'), S)
DeleteFile(ExpandConstant('{app}\filename.txt'));
WideString(S)
SaveStringToFile(ExpandConstant('{app}')+'\filename.ini', WString, true);
end;
end;

[UninstallDelete]
Type: files; Name: "{app}\filename.ini"[/more]
Автор: Diawer
Дата сообщения: 15.06.2008 20:41
braunberg, спасибо за вариант но я стараюсь качать последние версии программ в надежде, что они всё таки правельнее
firefly2005, через реестр конечно же проблема не решаеться

Я хотел поменять иконку в unins000.exe потому, что это решит проблемы со сменой иконок связанных с деинсталлятором в других местах(да и видел не раз это реализованно), идея была такая, что бы присвоить в наглую свою inon.ico - unins000.exe, разумеется лучше по средствам секции [Код], жаль это похоже не реально.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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