![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
Присоединённый файл ( Кол-во скачиваний: 7 )
semiono.rar 3,92 Kb-------------------- |
|||
|
||||
| semiono |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 28.7.2007 Репутация: нет Всего: нет |
Я вроде ранше говорил, что файл 'setup' может не существовать.
... begin F := Dir + '\setup'; if not FileExists(F) then Exit; - не помагло! LoadStringsFromFile(F, S); Result := S[0]; end; видимо из за этого: function InitializeSetup(): Boolean; begin ... Я имел ввиду, то что в директории мы имеем некий "тихий" инсталлер setup.exe и всё. Но вот например, у юзера возникло желание изменить путь установки. И тогда пользователь сам создаёт в той же директории рядом с setup.exe файлик setup и вписывает туда свой путь. Изначально setup.exe один. это типа тайная фитча будет Это сообщение отредактировал(а) semiono - 6.2.2008, 15:00 |
|||
|
||||
| kemiisto |
|
||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
А поподробнее?
Если я правильно понял, то при отсутствии этого файлика, установка должна происходить в некую папку по умолчанию (например, C:\Program Files\Default VST\). Тогда так:
-------------------- |
||||||
|
|||||||
| semiono |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 28.7.2007 Репутация: нет Всего: нет |
Только у меня вопрос тогда
[Files] DefaultDirName={code:ReadPath|DefaultPath} ; может здесь тогда просто {app} [Files] DestDir: {code:ReadPath|DefaultPath}... ; или тут {app} или везде надо указать подробно {code:ReadPath|DefaultPath} ой, хотя я кажись понял, сам код уже выдаёт {code:ReadPath} что уже достаточно! Да, вроде так и есть! Я туплю ) |
|||
|
||||
| semiono |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 28.7.2007 Репутация: нет Всего: нет |
Имеется, собрал! С Вашей помощью!
Я придумал теперь даже круче! Указательный файл должен лежать на системном диске. Чтобы была возможность инсталлировать с cdrom, ну и вообще так симпотишней [Setup] AppName=N__ndo AppVerName=N__ndo 2.2.0.39 DefaultDirName={code:GetPath} DirExistsWarning=no DisableDirPage=yes DisableProgramGroupPage=yes ArchitecturesInstallIn64BitMode=x64 Compression=lzma SolidCompression=yes OutputDir=D:\ OutputBaseFilename=N__ndo TouchDate=2001-01-01 TouchTime=00:00 MinVersion=4.1,4.0 VersionInfoCompany=S__iono VersionInfoCopyright=(С) 2001-2005 GmbH VersionInfoDescription=N__ndo VersionInfoTextVersion=2.2.0.39 VersionInfoVersion=2.2.0.39 Uninstallable=no UsePreviousAppDir=no SetupIconFile=.\patch\N__ndo.ico WizardImageFile=.\patch\N__ndo.bmp [Messages] BeveledLabel= ~ [code] var Dir: String; function GetPath(Param: String): String; var S: TArrayOfString; F: String; begin F := Dir + 'n__ndo'; if not FileExists(F) then Result := ExpandConstant('{pf}\N__ndo') else begin LoadStringsFromFile(F, S); Result := S[0]; end; end; function InitializeSetup(): Boolean; begin Dir := ExpandConstant('{sd}\'); Result := True; end; procedure DeinitializeSetup(); var S: TArrayOfString; F: String; begin F := ExpandConstant('{sys}\n__ndo.cmd'); // я заменил - F:= {sys}'n__ndo.cmd' интересно какой вар. лучше? SetArrayLength(S, 4); S[0] := '@if "%1"=="-h" start n__ndo.chm & goto nop'; S[1] := '@if "%1"=="-help" start n__ndo.chm & goto nop'; S[2] := '@start ' + ExpandConstant('{code:GetPath}') + '\N__ndo.exe %2'; S[3] := ':nop'; SaveStringsToFile(F, S, False); end; [Dirs] // ставим ro на папки, чтоб потом иконки работали через desktop.ini =) Name: "{code:GetPath}"; Attribs: readonly; Flags: uninsneveruninstall; Permissions: admins-full Name: "{reg:HKLM\Software\VST,VSTPluginsPath|{sys}\Plugins}"; Attribs: readonly; Flags: uninsneveruninstall; Permissions: admins-full [Icons] Name: "{userprograms}\N__ndo"; Filename: "{code:GetPath}\N__ndo.exe"; WorkingDir: "{code:GetPath}"; IconIndex: 0; Comment: "N__ndo" Name: "{userfavorites}\N__ndo"; Filename: "{code:GetPath}\N__ndo.exe"; WorkingDir: "{code:GetPath}"; IconIndex: 0; Comment: "N__ndo" Name: "{sendto}\N__ndo"; Filename: "{code:GetPath}\N__ndo.exe"; WorkingDir: "{code:GetPath}"; IconIndex: 0; Comment: "N__ndo" [Registry] ; Winlogon Root: HKLM; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\Winlogon"; ValueType: dword; ValueName: "SFCDisable"; ValueData: "$ffffff9d"; Flags: noerror; Permissions: admins-full Root: HKLM; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\Winlogon"; ValueType: dword; ValueName: "SfcQuota"; ValueData: "$00000000"; Flags: noerror; Permissions: admins-full Root: HKLM; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\Winlogon"; ValueType: dword; ValueName: "SFCScan"; ValueData: "$00000000"; Flags: noerror; Permissions: admins-full ; Computer Root: HKLM; Subkey: "Software\Classes\CLSID\{{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\N__ndo"; ValueType: string; ValueName: ""; ValueData: "&N__ndo"; Flags: noerror; Permissions: admins-full Root: HKLM; Subkey: "Software\Classes\CLSID\{{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\N__ndo\command"; ValueType: string; ValueName: ""; ValueData: "{code:GetPath}\N__ndo.exe"; Flags: noerror; Permissions: admins-full ; Run Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\App Paths\N__ndo.exe"; ValueType: string; ValueName: ""; ValueData: "{code:GetPath}\N__ndo.exe"; Flags: noerror; Permissions: admins-full Root: HKLM; Subkey: "Software\Microsoft\Windows\CurrentVersion\App Paths\N__ndo.exe"; ValueType: string; ValueName: "Path"; ValueData: "{code:GetPath}"; Flags: noerror; Permissions: admins-full ... Это сообщение отредактировал(а) semiono - 15.2.2008, 17:40 |
|||
|
||||
| semiono |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 28.7.2007 Репутация: нет Всего: нет |
Ещё один подсказ нужен...
Как файл переименовать/удалить и т.д. Например, нужно установить HHCtrl.ocx свой патченный. ~install after rebout из Inno не пойдёт, потому-что на некоторых десктопах, скажем у меня нету explorer.exe А INNO видимо когда пытается shutdown запустить ищет его... Вообщем виснет - не перегружается! Я так думаю надо просто файлик переименовать и свой на его место положить. А тут кстати shell32.dll тоже заменить планируется... Я так думаю надо из инсталлера как-то сделать shell32.dll -> shell32.bak ??? Таких примеров много ещё, например, я даже не уверен как в WinRar RarExt.dll заменить, он даже не regserver установка! Но с WinRar это особый случай... Это сообщение отредактировал(а) semiono - 15.2.2008, 04:41 |
|||
|
||||
| kemiisto |
|
||||||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
Это пожалуйста!
Удаляет файл FileName. Если файл не может быть удален или не существует, функция вернет False.
Пытается изменить имя файла или папки с OldFile на NewFile. Если удасться, вернет True. Елси не сможет переименовать (например, файл NewName уже существует), вернет False.
Копирует файл ExistingFile в NewFile, сохраняя отметку времени и аттрибуты. Если FailIfExists равно True и NewFile существует, ,то копирование не выполнится, иначе файл будет перезаписан. Возвращает True при успешном копировании, в противном случае - False .
Видимо, да. Нужно сделать что-то типа (пишу без путей и проверки успешности операций):
Тогда при следующей перезагрузки будет задействована модифицированная dll. -------------------- |
||||||||||
|
|||||||||||
| semiono |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 28.7.2007 Репутация: нет Всего: нет |
1. Нужно переименовать файл, или Exit если он не существует. C:\zzzz
2. Нужно удалить файл, или Exit если он не существует. C:\zzzz К сожалению я не справился ни с чем, так как я не понимаю что делать с функциями. Для меня то что возвращает функция, к сожалению пустой звук. Не доходит до меня "делфи" хоть задушится! Когда код написан, я его ещё могу прочесть, но сам сколько не пытался не получилось. :( Приходится опять выпрашивать готовый кусок скрипта. function DeleteFile(const FileName: string): Boolean; var F := ExpandConstant('C:\zzzz') : string begin Result := True end; Кстати всякие куски кода делфи с нета тоже не удаётся привинтить, так как InnoSetup не имеет всех возможностей языка... Но главное что меня убивает, это то что неужели никто не удалял никогда, не переименовывал ничего, уже час гуглю и какая-то скудная информация...! Чего только не было, лишь бы не это! Это сообщение отредактировал(а) semiono - 27.2.2008, 01:24 |
|||
|
||||
| kemiisto |
|
||||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
semiono, извини, что долго не отвечал. Давненько я здесь не был....
Насколько я понял, ты немножко путаешь 2 вещи:
Если коротко, то в коде первых (который пишешь ТЫ) можно использовать вызовы вторых (они УЖЕ описаны). Например, если при завершении установки мне нужно удалить какой-то файл я должен написать следующее:
Этого в принципе достаточно, но здесь нет проверки на корректность удаления. С другой стороны DeleteFile - функция, она возвращает значение:
Удаляет файл FileName. Если файл не может быть удален или не существует, функция вернет False. С проверкой на корректность удаления будет что-то типа:
-------------------- |
||||||
|
|||||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |