Отдельно по програм, то от 15 до 50 метров. А вообще хотелось бы выложить ISO с кучей всего полезного.
» Inno Setup (создание инсталяционных пакетов)
Цитата:
-- добавь строку TextLabel.Enabled:= False;
СПАСИБО!
Цитата:
как сделать, чтоб при деинсталляции приложения производилась проверка запущен ли процесс и в случае, если запущен, предлагала закрыть его и только после этого продолжалась деинсталляция.
Actual Installer поддерживает эту функцию.
ФТП - Закрыт в связи с отпавшей в нем необходимостью
ComradG
Вот тебе ещё и мыло на 50мб(для прог хватит), если с ftp не справишься, уж коль такой ленивый и сам пустышку сделать не можешь, заливай. Хотя я уверен, что ты скажешь что он не работает или пароль не подходит или целого 1кб места не хватает Кстати сильно сомневаюсь, что твой ISO с кучей всего полезного хоть какое-то отношение имеет к inno.
ящик: comradg@rambler.ru
пароль: ru-board
Вот тебе ещё и мыло на 50мб(для прог хватит), если с ftp не справишься, уж коль такой ленивый и сам пустышку сделать не можешь, заливай. Хотя я уверен, что ты скажешь что он не работает или пароль не подходит или целого 1кб места не хватает Кстати сильно сомневаюсь, что твой ISO с кучей всего полезного хоть какое-то отношение имеет к inno.
ящик: comradg@rambler.ru
пароль: ru-board
Подскажите, как сделать, при установке создавался файл {app}\zsnesw.cfg и в нем прописывалась строка ROMPath=C:\\Program Files\\Zsnes\\Roms\\
, то есть C:\\Program Files\\Zsnes\\ – это {app} и обязательно с двойными \\, нашел много на эту тему но как сделать двойные \\ нету.
, то есть C:\\Program Files\\Zsnes\\ – это {app} и обязательно с двойными \\, нашел много на эту тему но как сделать двойные \\ нету.
Здравствуйте!!! Меня интересуют 2-а вопроса, буду очень благодарен, если поможете решить!!!
Вопрос 1-ый: Заранее извиняюсь, если повторяюсь!!! Как можно сделать, что бы во время (или после, значение не имеет) установки инсталлятор себя копировал, например, по адресу «C:\Documents and Settings\All Users\Application Data\...».
Вопрос 2-ой: Как можно сделать, чтобы, когда я за хожу в «Установка удаление программ» и нажимаю на кнопку «Удалить/заменить» у программы установленной через Inno, мне открывалась собственная программа-деинсталлятор.
Заранее Огромное Спасибо!!!
Вопрос 1-ый: Заранее извиняюсь, если повторяюсь!!! Как можно сделать, что бы во время (или после, значение не имеет) установки инсталлятор себя копировал, например, по адресу «C:\Documents and Settings\All Users\Application Data\...».
Вопрос 2-ой: Как можно сделать, чтобы, когда я за хожу в «Установка удаление программ» и нажимаю на кнопку «Удалить/заменить» у программы установленной через Inno, мне открывалась собственная программа-деинсталлятор.
Заранее Огромное Спасибо!!!
Diawer -- смотри в хелпе описание функции StringChangeEx. Практически готовый пример. В примере замена слэша на обратный слэш, а ты меняй на двойной.
Aglow51
[Files]
Source: {srcexe}; DestDir: {commonappdata}; Flags: external
Source: "SuperDeinst.exe"; DestDir: "{app}"; DestName: unins000.exe; Flags: ignoreversion
... первая строка копирует файл инсталлятора; вторая - подменяет деинсталлятор
Aglow51
[Files]
Source: {srcexe}; DestDir: {commonappdata}; Flags: external
Source: "SuperDeinst.exe"; DestDir: "{app}"; DestName: unins000.exe; Flags: ignoreversion
... первая строка копирует файл инсталлятора; вторая - подменяет деинсталлятор
Genri, Огромное Спасибо!!!
Genri
Я не понял, в каком хелпе, где это?
Я не понял, в каком хелпе, где это?
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;
Буквально из хелпа:
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;
Прошу прощения, но в виду грубости и проявления "чрезвычайного ума" со стороны Victor_Dobrov программы выкладывать не намерен. Скажите ему спасибо и разрешите откланяться.
ComradG
Слив засчитан!
Слив засчитан!
Народ, неужели непонятно что ComradG всех тут за лохов держит. Нету никаких программ, поэтому и выкладывать нечего.
Это можно очень легко проверить
Вот компилированный код от игры Stalker Clear Sky:
http://rs47.rapidshare.com/files/155858637/CompiledCode.bin
Если ComradG хочет доказать что это не так, то ему ничего не будет стоить восстановить этот код.
Это можно очень легко проверить
Вот компилированный код от игры Stalker Clear Sky:
http://rs47.rapidshare.com/files/155858637/CompiledCode.bin
Если ComradG хочет доказать что это не так, то ему ничего не будет стоить восстановить этот код.
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;
Добавлено:
Цитата:
Нашел вот это, вроде это тоже самое, но здесь можно добавить второй \ везде кроме (допустим) 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 всех тут за лохов держит., так и есть. Я долго наблюдал и молчал, но это конкретно надоело, надоел не он а, что не все еще это поняли и не поняли, что все его обещания просто болтовня, и этот человек ничего здесь не выложит из своих трудов по одной простой причине, выкладывать реально НЕчего. Думаю самым правильным будет, ни что иное как попросту Игнорировать его.
Народ кто нибудь помогите, незнаю, как сделать так чтоб когда нажимаешь удалить программу в реестре проверяется определённый ключ и если там его нет, то данные удаляются с реестра, а если есть то остаются.
Diawer -- ?? а почему не так:
S := ExpandConstant('{app}\Roms\')
StringChangeEx(S, '\', '\\', True);
S := ExpandConstant('{app}\Roms\')
StringChangeEx(S, '\', '\\', True);
Ребята, пожалуйста помогите, сил и терпения уже нет. Как, все же, заставить инсталлятор удалиться в конце установки с HDD? Или м.б. возможно переместить его в папку "Temp"? Просто вариант с батником выглядит не совсем красиво! О целесообразности этих действий я писал выше. Надеюсь на общую помощь. Я не ленивый, просто не программист и многие "вещи" для меня пока загадка.
ComradG
Цитата:
Скатертью дорога!
Цитата:
Прошу прощения, но в виду грубости и проявления "чрезвычайного ума" со стороны Victor_Dobrov программы выкладывать не намерен. Скажите ему спасибо и разрешите откланяться.
Скатертью дорога!
ComradG
Цитата:
Странно, вроде после того, как ты пожаловался на плохую работу (своего) ftp и тебе предложили сервак, Victor_Dobrov ничего тебе вообще не сказал.
Может, у тя никаких программ и нет, а так, один трёп?
Цитата:
Прошу прощения, но в виду грубости и проявления "чрезвычайного ума" со стороны Victor_Dobrov программы выкладывать не намерен. Скажите ему спасибо и разрешите откланяться
Странно, вроде после того, как ты пожаловался на плохую работу (своего) ftp и тебе предложили сервак, Victor_Dobrov ничего тебе вообще не сказал.
Может, у тя никаких программ и нет, а так, один трёп?
Artem_Butenko
Цитата:
любой екзешник висящий в памяти НЕ может быть удален. все программы модифицирующие/удаляющие сами себя (внешне так выглядит) создают/распаковывают/... стороннюю прогу, запускают ее, а сами закрываются. дальше работает это стороннее приложение. в твоем случае батник наилучший выход, т.к. он в отличии от экзешника может удалить сам себя (т.е. ты после себя не оставишь никакого мусора). только тебе нужно дождаться когда твой инсталл полностью выгрузится из памяти, чтобы можно было его удалить.
Цитата:
Ребята, пожалуйста помогите, сил и терпения уже нет. Как, все же, заставить инсталлятор удалиться в конце установки с HDD? Или м.б. возможно переместить его в папку "Temp"? Просто вариант с батником выглядит не совсем красиво! О целесообразности этих действий я писал выше. Надеюсь на общую помощь. Я не ленивый, просто не программист и многие "вещи" для меня пока загадка.
любой екзешник висящий в памяти НЕ может быть удален. все программы модифицирующие/удаляющие сами себя (внешне так выглядит) создают/распаковывают/... стороннюю прогу, запускают ее, а сами закрываются. дальше работает это стороннее приложение. в твоем случае батник наилучший выход, т.к. он в отличии от экзешника может удалить сам себя (т.е. ты после себя не оставишь никакого мусора). только тебе нужно дождаться когда твой инсталл полностью выгрузится из памяти, чтобы можно было его удалить.
Artem_Butenko
Цитата:
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;
Цитата:
Как, все же, заставить инсталлятор удалиться в конце установки с 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;
Genri
Извеняюсь, ступил, все работает, спасибо.
Добавлено:
Может, кто знает, где-то видел код, но не могу вспомнить где, там после деинсталляции появляется окно, в котором показываются не удалившиеся файлы с возможностью удалить все оставшееся или отметить, что удалить, а что оставить. Если кто-то знает где посмотреть, скажите.
Извеняюсь, ступил, все работает, спасибо.
Добавлено:
Может, кто знает, где-то видел код, но не могу вспомнить где, там после деинсталляции появляется окно, в котором показываются не удалившиеся файлы с возможностью удалить все оставшееся или отметить, что удалить, а что оставить. Если кто-то знает где посмотреть, скажите.
Diawer
Вот тут смотри:
http://forum.ru-board.com/topic.cgi?forum=5&topic=23235&start=991&limit=1&m=1#1
Вот тут смотри:
http://forum.ru-board.com/topic.cgi?forum=5&topic=23235&start=991&limit=1&m=1#1
htuos и Genri большое Вам спасибо за помощь!
Народ кто нибудь знает, как сделать? Удаление из реестра при удаление программы, по определённому критерию
http://forum.ru-board.com/topic.cgi?forum=5&topic=27438&start=1260#lt
http://forum.ru-board.com/topic.cgi?forum=5&topic=27438&start=1260#lt
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]
Цитата:
Удаление из реестра при удаление программы, по определённому критерию
[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]
Ph9M2
Спасибо, код хороший, а главное нужный.
Только если не трудно посмотри, пожалуйста, все работает как надо кроме кнопки “Select All” – выбрать все, она почему-то не срабатывает, нажимается, а действия от нее ожидаемого не происходит.
Спасибо, код хороший, а главное нужный.
Только если не трудно посмотри, пожалуйста, все работает как надо кроме кнопки “Select All” – выбрать все, она почему-то не срабатывает, нажимается, а действия от нее ожидаемого не происходит.
Diawer
Этот код написал Genri. Я лишь привёл ссылку на него. Так что свой вопрос лучше ему адресуй
Этот код написал Genri. Я лишь привёл ссылку на него. Так что свой вопрос лучше ему адресуй
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;
Цитата из 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, истории становления российского интернета. Сделано для людей.