PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 7]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 [106] 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

saurn
09-12-2014, 10:46
svs23, kotyarko@fb, просто переименовать недостаточно. В этом случае запись в удалении программ будут вести в никуда. Dodakaedr предложил верный вариант. Где-то на форуме была еще пара примеров, но суть везде одна.

kotyarko@fb
09-12-2014, 10:46
прописал в [Files]
Source: BeforeInstall: BackupCheck_4(); »
С какой целью?

И с какой целью вы используете переменную CurrentFileName (которая определяет обрабатываемый в данный момент файл, при установке)?

Dodakaedr
09-12-2014, 10:48
спс, но для меня это сложновато »
но так будет правильнее

kotyarko@fb
09-12-2014, 10:49
В этом случае ярлык деинсталятора(если есть) и запись в удалении программ будут вести в никуда. »
Ну тогда ещё реестр можно подправить:RegWriteStringValue(HKLM, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\Программа_is1','UninstallString', ExpandConstant('{app}\uninstall.exe'));

svs23
09-12-2014, 10:52
С какой целью?
И с какой целью вы используете переменную CurrentFileName (которая определяет обрабатываемый в данный момент файл, при установке)? »
нашел на одном из форумов код для создания резервных копий только для заменяемых файлов

procedure CreateBackup;
var
srcFile, destFile: string;
basePath, shortPath: string;
begin
if IsTaskSelected('src') then
begin
basePath := ExpandConstant('{app}\res_mods');
srcFile := ExpandConstant(CurrentFileName);
shortPath := srcFile;
StringChangeEx(shortPath, basePath, '', True);
destFile := ExpandConstant('{app}\res_mods\Backup') + shortPath;
ForceDirectories(ExtractFilePath(destFile));
MoveFile(PChar(srcFile), PChar(destFile));
end;
end;


так вот и пытаюсь его приспособить...

ранее, когда он был у меня в коде только один без этих BackupCheck, работал без проблем, а теперь....

svs23, kotyarko@fb, просто переименовать недостаточно. В этом случае запись в удалении программ будут вести в никуда. Dodakaedr предложил верный вариант. Где-то на форуме была еще пара примеров, но суть везде одна. »
но так будет правильнее »
спс, но я отключил отображение в УСТАНОВЛЕННЫХ ПРОГРАММАХ моего установщика, удаление через ярлык на рабочем столе или из папки где установлен

saurn
09-12-2014, 10:58
svs23, если хотите использовать BackupCheck_4() в таком виде в BeforeInstall, то тогда function замените на procedure. И читайте в справке о использовании внешних и встроенных функций.
Ну тогда ещё реестр можно подправить: »
Да. Ну и еще пару записей в реестре.

kotyarko@fb
09-12-2014, 11:04
Да. Ну и еще пару записей в реестре. »
Хм.. значит, невнимательно просматривал. Буду знать.

svs23
09-12-2014, 11:12
svs23, если хотите использовать BackupCheck_4() в таком виде в BeforeInstall, то тогда function замените на procedure. И читайте в справке о использовании внешних и встроенных функций. »
спс. вроде помогло, проверяю....

всем ОГРОМНОЕ спс за помощь, все заработало так как я хочу...
теперь еще unins домучаю и все, с меня хватит
еще раз всем спс :)

svs23
09-12-2014, 11:44
последняя, надеюсь, просьба :)
помогите увязать в одной функции два кодаprocedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssInstall then
begin
BackupCheck_2();
BackupCheck_3();
end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
case CurStep of
ssDone: RewritingUninstallData();
end;
end;

у меня не получается...

Dodakaedr
09-12-2014, 11:47
procedure CurStepChanged(CurStep: TSetupStep);
begin
case CurStep of
ssInstall:
begin
BackupCheck_2();
BackupCheck_3();
end;
ssDone:
begin
RewritingUninstallData();
end;
end;
end;

svs23
09-12-2014, 11:54
Dodakaedr,
спасибо!

вопрос, наверное не по адресу, но все же спрошу, можно как-нибудь прописать чтобы после установки указанные ярлыки (определенный файлы txt и xml) открывались с помощью Notepad++ (это для тех кто не знает что такое "открыть с помощью", да и еще найти там Notepad++)
сразу извиняюсь если не по адресу

Dodakaedr
09-12-2014, 12:18
можно как-нибудь прописать чтобы после установки указанные ярлыки (определенный файлы txt и xml) открывались с помощью Notepad++ »
Notepad++ может быть и не установлен, поэтому открываем программой по умолчанию.

[Run]
Filename: "{app}\INIT.xml"; Description: "View file"; Flags: postinstall shellexec skipifsilent
Filename: "{app}\README.TXT"; Description: "View the README file"; Flags: postinstall shellexec skipifsilent

Kashtan007
09-12-2014, 12:28
Всем привет, скажите пожалуйста, как можно убить нужный мне процесс перед началом установки, желательно уведомив о закрытии процесса?
Если можно, то скиньте оба варианта, заранее спасибо!

P.S. У меня Unicode

svs23
09-12-2014, 12:37
Notepad++ может быть и не установлен, поэтому открываем программой по умолчанию. »
но я же могу его и скрыто установить ;)

Dodakaedr,
а как к View the README file и View file привязать Notepad++ (и я так понимаю он должен быть полноценно установлен в систему с записью в реестре?)

Dodakaedr
09-12-2014, 13:10
но я же могу его и скрыто установить »
можете
а как к View the README file и View file привязать Notepad++ (и я так понимаю он должен быть полноценно установлен в систему с записью в реестре?) »
Да. И привязку через реестр нужно делать, но не советую такое делать, это мало кому понравится и к тому же дополнительный вес к инсталлу.
Я установил вашу игру и по умолчанию у меня для открытия текстовых файлов стоит SynWrite, но после установки вашей игры установится Notepad++ который мне и даром не нужен и собьются настройки по умолчанию, мне это сразу не понравится и врядли больше буду устанавливать ваши репаки.


как можно убить нужный мне процесс перед началом установки »
Какой именно процесс? IsTask.dll пробовали?

saurn
09-12-2014, 13:12
а как к View the README file и View file привязать Notepad++ »
[Run]
Filename: Путь к папке\notepad++.exe; Parameters: "{app}\INIT.xml"; Description: "View file"; Flags: postinstall shellexec skipifsilent
Filename: Путь к папке\notepad++.exe; Parameters: "{app}\README.TXT"; Description: "View the README file"; Flags: postinstall shellexec skipifsilent
я так понимаю он должен быть полноценно установлен в систему с записью в реестре »
Необязательно. Можно использовать портативный вариант.
но я же могу его и скрыто установить »
А это нехороший вариант. Надо уважать пользователя.
как можно убить нужный мне процесс перед началом установки »
В шапке темы есть примеры.

svs23
09-12-2014, 13:21
[Run]
Filename: Путь к папке\notepad++.exe; Parameters: "{app}\INIT.xml"; Description: "View file"; Flags: postinstall shellexec skipifsilent
Filename: Путь к папке\notepad++.exe; Parameters: "{app}\README.TXT"; Description: "View the README file"; Flags: postinstall shellexec skipifsilent »
А это нехороший вариант. Надо уважать пользователя. »
так чтобы сделать такую привязку мне нужно что-бы у пользователя notepad++ был в определенной папке
так вот я его и установлю в DestDir: "{sd}\Notepad++\";
чтобы сделать вот так
[Run]
Filename: {sd}\Notepad++\notepad++.exe; Parameters: "{app}\INIT.xml"; Description: "View file"; Flags: postinstall shellexec skipifsilent
Filename: {sd}\Notepad++\notepad++.exe; Parameters: "{app}\README.TXT"; Description: "View the README file"; Flags: postinstall shellexec skipifsilent

saurn
09-12-2014, 13:27
чтобы сделать такую привязку мне нужно что-бы у пользователя notepad++ был в определенной папке »
Разумеется. В данном случае подойдет и портативная версия, так как имя открываемого файла передается программе параметром комстроки. Говоря о нехорошем варианте, я имел ввиду, что не надо устанавливать некий дополнительный софт без ведома пользователя. Предупредите о том, что будет установлена дополнительная программа, а лучше предоставьте выбор.

Какой именно процесс? IsTask.dll пробовали? »
IsTask.dll не работает на Unicode версии. Где-то в предыдущей теме выкладывали IsTask.dll для юникода. Да и в шапке есть варинаты без дополнительных библиотек.

Kashtan007
09-12-2014, 13:29
Какой именно процесс? IsTask.dll пробовали? »

Процесс WorldOfTanks.exe, да пробовал, процесс не убивается (

svs23
09-12-2014, 13:41
saurn, посмотрел предложенный код... я ни это имел ввиду, но спасибо....
у меня в коде прописано, что после установки на рабочем столе создается новая папка, в ней ярлыки на файлы настроек модов (чтобы не по папкам их искать, а все в одном месте), вот эти ярлыки (файлы) открывать notepad++




© OSzone.net 2001-2012