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

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

Автор: ComradG
Дата сообщения: 19.10.2008 22:33
Отдельно по програм, то от 15 до 50 метров. А вообще хотелось бы выложить ISO с кучей всего полезного.
Автор: VDon
Дата сообщения: 20.10.2008 03:17


Цитата:
-- добавь строку TextLabel.Enabled:= False;


СПАСИБО!
Автор: Maksimus666
Дата сообщения: 20.10.2008 09:45

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


Actual Installer поддерживает эту функцию.
Автор: SergeyLS
Дата сообщения: 20.10.2008 09:50
ФТП - Закрыт в связи с отпавшей в нем необходимостью
Автор: ExpeditorR
Дата сообщения: 20.10.2008 12:33
ComradG
Вот тебе ещё и мыло на 50мб(для прог хватит), если с ftp не справишься, уж коль такой ленивый и сам пустышку сделать не можешь, заливай. Хотя я уверен, что ты скажешь что он не работает или пароль не подходит или целого 1кб места не хватает Кстати сильно сомневаюсь, что твой ISO с кучей всего полезного хоть какое-то отношение имеет к inno.

ящик: comradg@rambler.ru
пароль: ru-board
Автор: Diawer
Дата сообщения: 20.10.2008 14:29
Подскажите, как сделать, при установке создавался файл {app}\zsnesw.cfg и в нем прописывалась строка ROMPath=C:\\Program Files\\Zsnes\\Roms\\
, то есть C:\\Program Files\\Zsnes\\ – это {app} и обязательно с двойными \\, нашел много на эту тему но как сделать двойные \\ нету.
Автор: Aglow51
Дата сообщения: 20.10.2008 15:34
Здравствуйте!!! Меня интересуют 2-а вопроса, буду очень благодарен, если поможете решить!!!

Вопрос 1-ый: Заранее извиняюсь, если повторяюсь!!! Как можно сделать, что бы во время (или после, значение не имеет) установки инсталлятор себя копировал, например, по адресу «C:\Documents and Settings\All Users\Application Data\...».

Вопрос 2-ой: Как можно сделать, чтобы, когда я за хожу в «Установка удаление программ» и нажимаю на кнопку «Удалить/заменить» у программы установленной через Inno, мне открывалась собственная программа-деинсталлятор.

Заранее Огромное Спасибо!!!

Автор: Genri
Дата сообщения: 20.10.2008 16:12
Diawer -- смотри в хелпе описание функции StringChangeEx. Практически готовый пример. В примере замена слэша на обратный слэш, а ты меняй на двойной.

Aglow51
[Files]
Source: {srcexe}; DestDir: {commonappdata}; Flags: external
Source: "SuperDeinst.exe"; DestDir: "{app}"; DestName: unins000.exe; Flags: ignoreversion

... первая строка копирует файл инсталлятора; вторая - подменяет деинсталлятор
Автор: Aglow51
Дата сообщения: 20.10.2008 16:38
Genri, Огромное Спасибо!!!
Автор: Diawer
Дата сообщения: 20.10.2008 17:57
Genri
Я не понял, в каком хелпе, где это?
Автор: Genri
Дата сообщения: 20.10.2008 18:10
Diawer -- разумеется хелп инно. Раздел Pascal Scripting: Support Functions Reference подраздел String functions
Буквально из хелпа:
Example:
var
S: String;
begin
S := ExpandConstant('{commonappdata}');
// S = 'C:\Documents and Settings\All Users\Application Data'

StringChangeEx(S, '\', '/', True);
// S = 'C:/Documents and Settings/All Users/Application Data'
end;
Автор: ComradG
Дата сообщения: 20.10.2008 19:00
Прошу прощения, но в виду грубости и проявления "чрезвычайного ума" со стороны Victor_Dobrov программы выкладывать не намерен. Скажите ему спасибо и разрешите откланяться.
Автор: Sampron
Дата сообщения: 20.10.2008 19:10
ComradG
Слив засчитан!
Автор: Ph9M2
Дата сообщения: 20.10.2008 19:24
Народ, неужели непонятно что ComradG всех тут за лохов держит. Нету никаких программ, поэтому и выкладывать нечего.
Это можно очень легко проверить
Вот компилированный код от игры Stalker Clear Sky:
http://rs47.rapidshare.com/files/155858637/CompiledCode.bin
Если ComradG хочет доказать что это не так, то ему ничего не будет стоить восстановить этот код.
Автор: Diawer
Дата сообщения: 20.10.2008 20:05
Genri
Нашел вот это, вроде это тоже самое, но здесь можно добавить второй \ везде кроме (допустим) C:\\Program Files\ZsnesW\\Roms\\ , между Program Files\ZsnesW НЕТ.

procedure CurStepChanged(CurStep: TSetupStep);
var
S: String;
begin
If CurStep=ssPostInstall then
begin
S := ExpandConstant('{app}\\Roms\\')
StringChangeEx(S, ':\', ':\\', True);
SaveStringToFile(ExpandConstant('{app}')+'\zsnesw.cfg', 'ROMPath=' + S + #13, true);
end;
end;


Добавлено:

Цитата:
Народ, неужели непонятно что ComradG всех тут за лохов держит.
, так и есть. Я долго наблюдал и молчал, но это конкретно надоело, надоел не он а, что не все еще это поняли и не поняли, что все его обещания просто болтовня, и этот человек ничего здесь не выложит из своих трудов по одной простой причине, выкладывать реально НЕчего. Думаю самым правильным будет, ни что иное как попросту Игнорировать его.
Автор: ochra
Дата сообщения: 20.10.2008 20:07
Народ кто нибудь помогите, незнаю, как сделать так чтоб когда нажимаешь удалить программу в реестре проверяется определённый ключ и если там его нет, то данные удаляются с реестра, а если есть то остаются.
Автор: Genri
Дата сообщения: 20.10.2008 22:42
Diawer -- ?? а почему не так:
S := ExpandConstant('{app}\Roms\')
StringChangeEx(S, '\', '\\', True);
Автор: Artem_Butenko
Дата сообщения: 21.10.2008 00:09
Ребята, пожалуйста помогите, сил и терпения уже нет. Как, все же, заставить инсталлятор удалиться в конце установки с HDD? Или м.б. возможно переместить его в папку "Temp"? Просто вариант с батником выглядит не совсем красиво! О целесообразности этих действий я писал выше. Надеюсь на общую помощь. Я не ленивый, просто не программист и многие "вещи" для меня пока загадка.
Автор: SergeyLS
Дата сообщения: 21.10.2008 06:56
ComradG

Цитата:
Прошу прощения, но в виду грубости и проявления "чрезвычайного ума" со стороны Victor_Dobrov программы выкладывать не намерен. Скажите ему спасибо и разрешите откланяться.

Скатертью дорога!
Автор: Varenik
Дата сообщения: 21.10.2008 08:39
ComradG

Цитата:
Прошу прощения, но в виду грубости и проявления "чрезвычайного ума" со стороны Victor_Dobrov программы выкладывать не намерен. Скажите ему спасибо и разрешите откланяться

Странно, вроде после того, как ты пожаловался на плохую работу (своего) ftp и тебе предложили сервак, Victor_Dobrov ничего тебе вообще не сказал.
Может, у тя никаких программ и нет, а так, один трёп?
Автор: htuos
Дата сообщения: 21.10.2008 09:37
Artem_Butenko

Цитата:
Ребята, пожалуйста помогите, сил и терпения уже нет. Как, все же, заставить инсталлятор удалиться в конце установки с HDD? Или м.б. возможно переместить его в папку "Temp"? Просто вариант с батником выглядит не совсем красиво! О целесообразности этих действий я писал выше. Надеюсь на общую помощь. Я не ленивый, просто не программист и многие "вещи" для меня пока загадка.

любой екзешник висящий в памяти НЕ может быть удален. все программы модифицирующие/удаляющие сами себя (внешне так выглядит) создают/распаковывают/... стороннюю прогу, запускают ее, а сами закрываются. дальше работает это стороннее приложение. в твоем случае батник наилучший выход, т.к. он в отличии от экзешника может удалить сам себя (т.е. ты после себя не оставишь никакого мусора). только тебе нужно дождаться когда твой инсталл полностью выгрузится из памяти, чтобы можно было его удалить.
Автор: Genri
Дата сообщения: 21.10.2008 09:38
Artem_Butenko

Цитата:
Как, все же, заставить инсталлятор удалиться в конце установки с HDD?
--
procedure SelfDelete();
var
str: string;
BatName: string;
ResultCode: Integer;
begin
BatName:= ExpandConstant('{src}\del_bat.cmd');
str:= str+ '@echo off' + #10#13 +
str+ ':LOOP' + #10#13 +
str+ 'del ' + '"' + ExpandConstant('{srcexe}') + '"' + #10#13 +
str+ 'if exist ' + '"' + ExpandConstant('{srcexe}') + '"' + ' goto LOOP' + #10#13 +
str+ 'del ' + '"' + BatName + '"';
SaveStringToFile(BatName, str, False);
Exec(BatName, '', '', SW_HIDE, ewNoWait, ResultCode);
end;

procedure DeinitializeSetup();
begin
SelfDelete();
end;
Автор: Diawer
Дата сообщения: 21.10.2008 10:26
Genri
Извеняюсь, ступил, все работает, спасибо.


Добавлено:
Может, кто знает, где-то видел код, но не могу вспомнить где, там после деинсталляции появляется окно, в котором показываются не удалившиеся файлы с возможностью удалить все оставшееся или отметить, что удалить, а что оставить. Если кто-то знает где посмотреть, скажите.
Автор: Ph9M2
Дата сообщения: 21.10.2008 10:38
Diawer

Вот тут смотри:
http://forum.ru-board.com/topic.cgi?forum=5&topic=23235&start=991&limit=1&m=1#1
Автор: Artem_Butenko
Дата сообщения: 21.10.2008 11:33
htuos и Genri большое Вам спасибо за помощь!
Автор: ochra
Дата сообщения: 21.10.2008 16:18
Народ кто нибудь знает, как сделать? Удаление из реестра при удаление программы, по определённому критерию
http://forum.ru-board.com/topic.cgi?forum=5&topic=27438&start=1260#lt
Автор: serg_aka_lain
Дата сообщения: 21.10.2008 19:12
ochra

Цитата:
Удаление из реестра при удаление программы, по определённому критерию


[more=Вот такой вариант]

[Setup]
AppName=Test
AppVerName=Test v 1.1
DefaultDirName={pf}\Test
OutputDir=.


[Registry]
Root: HKLM; Subkey: "Software\Test"; ValueType: string; ValueName: InstallLocation; ValueData: {app};

[Code]

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
begin
if not RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\ Проверка по определённому критерию ') then
begin
RegDeleteKeyIncludingSubkeys(HKEY_LOCAL_MACHINE, 'Software\Test');
end;
end;
end;

[/more]
Автор: Diawer
Дата сообщения: 22.10.2008 09:05
Ph9M2
Спасибо, код хороший, а главное нужный.
Только если не трудно посмотри, пожалуйста, все работает как надо кроме кнопки “Select All” – выбрать все, она почему-то не срабатывает, нажимается, а действия от нее ожидаемого не происходит.

Автор: Ph9M2
Дата сообщения: 22.10.2008 10:01
Diawer

Этот код написал Genri. Я лишь привёл ссылку на него. Так что свой вопрос лучше ему адресуй
Автор: Genri
Дата сообщения: 22.10.2008 13:02
Diawer, Ph9M2 -- этот вопрос лучше адресовать разработчикам инно
Цитата из Inno Setup 5 Revision History:
"5.1.13 (2007-07-22)
..............
TNewCheckListBox: Setting Checked[] to True will no longer automatically check an item's child check boxes. To do that now, call the new CheckItem method with coCheckWithChildren in the AOperation parameter."


Можно переделать процедуру ButtonOnClick следующим образом:
procedure ButtonOnClick(Sender: TObject);
begin
if TButton(Sender).Tag = 0 then
CheckListBox.CheckItem(0, coCheckWithChildren)
else
CheckListBox.CheckItem(0, coUnCheck);
end;

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970

Предыдущая тема: Презентация


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