Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )


> Написание скрипта для инсталлятора
Гость_Kindly_*
сообщение 17:03:2005, 16:05
Цитата Ответить 





Инопланетный гость






    


(Вопрос по Inno Setup 5) Я извиняюсь за вопрос немножко не в тему. Меня интереcует написание скрипта на Pascal следующего характера: Перед запуском инсталлятора нужна проверка реестра на определённый ключ, и если он существует - должен запускаться мастер инсталляции, а если ключ не существует, то должна вылетать мессага, что прога не найдена - жмите OK чтобы покинуть мастер (ну или другой текст). Вобщем вы программеры - для вас скриптик или только секцию кода написать не составит труда. Поможете такому как мне?
mailto:gubei_vadim@list.ru
Подняться вверх 
 
Сообщение #1
10 страниц V  « < 8 9 10  
Новая тема 
Ответов (270 - 290)
Volkogriz
Вставить ник
сообщение 8:06:2007, 01:10
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 21
Регистрация: 5:06:2007
Пользователь №: 11 239



Репутация:   0  


И ещё прозба !!!
После установки остаётся много мусора как собрать Униинсталяшку каторая б спрашивала пользователя удолить временные файлы ну и соответствена удаляла весь мусор!!! tongue.gif
Подняться вверх 
 
Сообщение #271
TRT
Вставить ник
сообщение 8:06:2007, 07:20
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 14
Регистрация: 12:10:2006
Пользователь №: 7 079



Репутация:   0  


Для: Volkogriz
Цитата(Volkogriz @ 8:06:2007, 03:29 )
Сетапчик со скином у меня здоров сабака и изо него то инеработает Уменьшение страницы.
*

Это старая версия скинов в ней много недоработок.
Сюда выложил финальную версию стандартных скинов:
]]>http://data.cod.ru/1105821130]]>
А вообще по инно сюда:
]]>http://forum.ru-board.com/topic.cgi?forum=...801&start=0]]>
так как этот форум мёртв.
Подняться вверх 
 
Сообщение #272
Nightw0lf
Вставить ник
сообщение 8:06:2007, 09:14
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 5
Регистрация: 10:12:2006
Пользователь №: 8 394



Репутация:   0  


Volkogriz
Цитата
После установки остаётся много мусора как собрать Униинсталяшку каторая б спрашивала пользователя удолить временные файлы ну и соответствена удаляла весь мусор!!!

Вот добавь в секцию [Setup]
[Setup]
;Означает создавать ли автоматический деинсталлятор. При значении "yes" он создается. При значении "no" автоматическое удаление будет невозможно, так что пользователь должен будет вручную удалять программу.
Uninstallable=yes
;Изменяет иконку на странице "Установка и удаление программ" в Панели управления
UninstallDisplayIcon={app}\ICONS\UnInstall.ico
;Место расположения деинсталлятора (по умолчанию значение - UninstallFilesDir={app})
UninstallFilesDir={app}\Uninstall
;Режим создания "лога" для деинсталлятора
UninstallLogMode=overwrite
Подняться вверх 
 
Сообщение #273
Volkogriz
Вставить ник
сообщение 9:06:2007, 10:11
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 21
Регистрация: 5:06:2007
Пользователь №: 11 239



Репутация:   0  


Благодорю!!! blink.gif
Подняться вверх 
 
Сообщение #274
Volkogriz
Вставить ник
сообщение 9:06:2007, 11:30
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 21
Регистрация: 5:06:2007
Пользователь №: 11 239



Репутация:   0  


Почиму форум мёртв???
Вродебы тема нармальная многие с етим сталкиваются!!!!
Подняться вверх 
 
Сообщение #275
Volkogriz
Вставить ник
сообщение 9:06:2007, 11:30
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 21
Регистрация: 5:06:2007
Пользователь №: 11 239



Репутация:   0  


Почиму форум мёртв???
Вродебы тема нармальная многие с етим сталкиваются!!!!
blink.gif
Подняться вверх 
 
Сообщение #276
Volkogriz
Вставить ник
сообщение 9:06:2007, 22:27
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 21
Регистрация: 5:06:2007
Пользователь №: 11 239



Репутация:   0  


Памагите с сетапчиком в Delphi!!!!
Подняться вверх 
 
Сообщение #277
Volkogriz
Вставить ник
сообщение 13:06:2007, 01:06
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 21
Регистрация: 5:06:2007
Пользователь №: 11 239



Репутация:   0  


ph34r.gif Я как зелёный попробую помочь !!![quote][code]должен запускаться мастер инсталляции, а если ключ не существует, то должна вылетать мессага, что прога не найдена - жмите OK чтобы покинуть мастер (ну или другой текст). Вобщем вы программеры - для вас скриптик или только секцию кода написать не составит труда. Поможете такому как мне?




Этакая комбинированная проверка. При инициализации проверяется присутствие определенного ключа, если его нету - выдается соответствующее сообщение и на этом действия прекращаются, если ключ присутствует, то появится сообщение об удачном обнаружении программы, также проверяется присутствие уже установленной программы, с предложением ее удалить.

Вы можете проверять также присутствие определенного файла_(ов) в папке с программой, либо размер, исходя из значений реестра. Просто установите нижеописанные проверки на присутствие и размер, с указанием в качестве константы данные ResultStr.

Код:
function InitializeSetup(): Boolean;
var
ResultCode: Integer;
s, ResultStr:string;
Result:=True;
begin
Result:=True;
If not RegKeyExists(HKLM, 'SOFTWARE\MY_PROGRAM')
then
begin
MsgBox('Программа MY_PROGRAM не установлена или установлена неверно.' #13#13 'Дальнейшая работа мастера невозможна.', mbError, mb_Ok);
Result:=False;
end
else
begin
MsgBox('Программа MY_PROGRAM успешно обнаружена.' #13#13 'Установка полностью автоматическая.', mbInformation, mb_Ok);
begin
If RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\My_Program_v1.0_is1', 'UninstallString', ResultStr)
then
begin
If ResultStr<>''
then
begin
ResultStr:=RemoveQuotes(ResultStr);
if MsgBox('Программа установки обнаружила уже установленную программу ранней версии.' #13#13 'Вы желаете предварительно удалить ее?', mbInformation, MB_YESNO) = idYes
then
if not Exec(ResultStr, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)
then
MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK);
end;
end;
end;
end;
end;

Для: Kindly
Я как зелёный попробую помочь !!![quote][code]должен запускаться мастер инсталляции, а если ключ не существует, то должна вылетать мессага, что прога не найдена - жмите OK чтобы покинуть мастер (ну или другой текст). Вобщем вы программеры - для вас скриптик или только секцию кода написать не составит труда. Поможете такому как мне?




Этакая комбинированная проверка. При инициализации проверяется присутствие определенного ключа, если его нету - выдается соответствующее сообщение и на этом действия прекращаются, если ключ присутствует, то появится сообщение об удачном обнаружении программы, также проверяется присутствие уже установленной программы, с предложением ее удалить.

Вы можете проверять также присутствие определенного файла_(ов) в папке с программой, либо размер, исходя из значений реестра. Просто установите нижеописанные проверки на присутствие и размер, с указанием в качестве константы данные ResultStr.

Код:
function InitializeSetup(): Boolean;
var
ResultCode: Integer;
s, ResultStr:string;
Result:=True;
begin
Result:=True;
If not RegKeyExists(HKLM, 'SOFTWARE\MY_PROGRAM')
then
begin
MsgBox('Программа MY_PROGRAM не установлена или установлена неверно.' #13#13 'Дальнейшая работа мастера невозможна.', mbError, mb_Ok);
Result:=False;
end
else
begin
MsgBox('Программа MY_PROGRAM успешно обнаружена.' #13#13 'Установка полностью автоматическая.', mbInformation, mb_Ok);
begin
If RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\My_Program_v1.0_is1', 'UninstallString', ResultStr)
then
begin
If ResultStr<>''
then
begin
ResultStr:=RemoveQuotes(ResultStr);
if MsgBox('Программа установки обнаружила уже установленную программу ранней версии.' #13#13 'Вы желаете предварительно удалить ее?', mbInformation, MB_YESNO) = idYes
then
if not Exec(ResultStr, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)
then
MsgBox('Ошибка удаления. ' #13#13 '' + SysErrorMessage(ResultCode) + '.' #13#13 'Вероятно, деинсталлятор был перемещен, удален или переименован.', mbError, MB_OK);
end;
end;
end;
end;
end;
Подняться вверх 
 
Сообщение #278
TRT
Вставить ник
сообщение 14:06:2007, 14:20
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 14
Регистрация: 12:10:2006
Пользователь №: 7 079



Репутация:   0  


Подскажите как можно сделать форму подвижной при значении WizardForm.BorderStyle:=bsNone ?
Подняться вверх 
 
Сообщение #279
TRT
Вставить ник
сообщение 17:06:2007, 22:01
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 14
Регистрация: 12:10:2006
Пользователь №: 7 079



Репутация:   0  


На одном форуме пробил такой код для Делфи где при значении BorderStyle=bsNone можно форму сделать подвижной:

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
Perform ( WM_SYSCOMMAND, SC_MOVE+2, 0 );
end;

Этого нехватает для полной красоты инсталлятора.
Можно ли это сделать для WizardForm в инно?
Очень надеюсь на помощь Программистов!
Заранее Благодарен!
Подняться вверх 
 
Сообщение #280
AdiSan
Вставить ник
сообщение 23:07:2007, 18:43
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 17
Регистрация: 23:07:2007
Пользователь №: 11 990



Репутация:   0  


Вопрост по Inno Setup 5. Может он уже где-то обсуждался, но по поиску найти не удалось, а
очень надо. Так вот: вместе со своей прогой в инсталлятор пихаю несколько Dll без которых
она не прет, не прет она и если эти Dll не зарегены в реестре, собсно, как это сделать? ПРиведите пжалста пример скрипта. Заранее благодарю.
Подняться вверх 
 
Сообщение #281
Nightw0lf
Вставить ник
сообщение 23:07:2007, 19:45
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 5
Регистрация: 10:12:2006
Пользователь №: 8 394



Репутация:   0  


AdiSan
Цитата
не прет она и если эти Dll не зарегены в реестре, собсно, как это сделать? Риведите пжалста пример скрипта. Заранее благодарю.

Вот пример регистрации библиотеки:
[code]
Source: "C:\msxml4.dll"; DestDir: "{sys}"; Flags: restartreplace sharedfile regserver
Подняться вверх 
 
Сообщение #282
AdiSan
Вставить ник
сообщение 24:07:2007, 15:40
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 17
Регистрация: 23:07:2007
Пользователь №: 11 990



Репутация:   0  


И всего то одна строчка. Nightw0lf, большой сэнкс.
Подняться вверх 
 
Сообщение #283
Димбай
Вставить ник
сообщение 1:08:2007, 15:27
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 2
Регистрация: 26:07:2007
Пользователь №: 12 049



Репутация:   0  


Всем привет!
Начал делать инсталятор в Inno и споткнулся об такую вещь:мне нужно найти в системе пользователя \Games\data\папку-sounds(звук оригинальной игры) и скопировать её в \Games\mod\data\sounds то есть в папку мода,который я хочу установить.В Inno это возможно? и если можно подскажите как при деинсталяции вернуть оригинальные файлы.Надеюсь что подскажите.Спасибо за внимание.
Подняться вверх 
 
Сообщение #284
Nightw0lf
Вставить ник
сообщение 2:08:2007, 09:40
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 5
Регистрация: 10:12:2006
Пользователь №: 8 394



Репутация:   0  


Димбай
Цитата
и если можно подскажите как при деинсталяции вернуть оригинальные файлы.Надеюсь что подскажите.

Я так понял тебе нужно сдела резерную копию оригинальных файлов, а при деинсталляции вернуть все обратно? Если да то вот:
#include "SHFileOperation.iss"

[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program

[Tasks]
Name: src; Description: "Backup"

[Files]
Source: "C:\util\*"; DestDir: {app}; BeforeInstall: CreateBackup; Flags: ignoreversion recursesubdirs createallsubdirs

[Code]
function MoveFile(const srcFile, destFile: PChar): Integer;
external 'MoveFileA@kernel32.dll stdcall';

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

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usPostUninstall then
begin
  MoveDir(ExpandConstant('{app}\Backup\'), ExpandConstant('{app}'));
  RemoveDir(ExpandConstant('{app}\Backup\'));
end;
end;


Скачать файл ]]>SHFileOperation.iss]]>

P.S.: для работы скрипта нужен ]]>препроцессор]]>

Сообщение отредактировал Nightw0lf - 2:08:2007, 09:51
Подняться вверх 
 
Сообщение #285
Nightw0lf
Вставить ник
сообщение 2:08:2007, 09:44
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 5
Регистрация: 10:12:2006
Пользователь №: 8 394



Репутация:   0  


[Удалено]

Сообщение отредактировал Nightw0lf - 2:08:2007, 09:49
Подняться вверх 
 
Сообщение #286
Димбай
Вставить ник
сообщение 2:08:2007, 16:15
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 2
Регистрация: 26:07:2007
Пользователь №: 12 049



Репутация:   0  


Для: Nightw0lf
Цитата
Я так понял тебе нужно сдела резерную копию оригинальных файлов, а при деинсталляции вернуть все обратно?

Да,файлов которые меняются или добавляются.Буду пробовать.Спасибо!
Подняться вверх 
 
Сообщение #287
Ded Mazai
Вставить ник
сообщение 25:10:2007, 19:15
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 1
Регистрация: 25:10:2007
Пользователь №: 13 377



Репутация:   0  


помогите плз, как сделать (или разбить), чтобы в итоге получилось 2-4 exe-шника,чтобы после установки 1го выводился запрос на установку 2го? если так можно, или как упаковать фалы размером 4-8 гб, ведь IS вроде мах пакует 2 гб - у меня ISC5
Подняться вверх 
 
Сообщение #288
Страег
Вставить ник
сообщение 13:04:2008, 08:43
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 2
Регистрация: 13:04:2008
Пользователь №: 16 591



Репутация:   0  


Всем добрый день.нужно вставить этот код:
Цитата(zubr @ 21:03:2005, 23:25 ) *
[Components]
Name: "Backup"; Description: "Backup"; Types: full

[Files]
Components: Backup; Source: "MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: MyProgCheck

[Code]

function MyProgCheck():boolean;
var
    s1, s2:string;
begin
Result:=True;
s1:=ExpandConstant('{app}')+'\MyProg.exe';
s2:=ExpandConstant('{app}')+'\Backup';
If FileExists(s1) then
begin
  CreateDir(s2);
  FileCopy(s1, s2+'\MyProg.exe', False);
end;
end;

Здесь файл MyProg.exe и есть с которого делается копия.


В этот скрипт.Плиз покажите куда именно его нужно вставить.я просто нупег
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[Setup]
AppName=Сокрушитель
AppVerName=Сокрушитель v3.2 by Crond
AppPublisher=SKYRIVER
AppPublisherURL=http://www.skyriver.ru/
AppSupportURL=http://www.skyriver.ru/
AppUpdatesURL=http://www.skyriver.ru/
DefaultDirName=C:\Program Files\SkyRiver\AIM II\Data
DefaultGroupName=Сокрушитель v3.2 by Crond
AllowNoIcons=yes
OutputDir=C:\Documents and Settings\PCHELP\Мои документы
OutputBaseFilename=Setup
SetupIconFile=C:\Documents and Settings\PCHELP\Мои документы\My Games\механоиды 2 война кланов моды\дополнения. проги\A.I.M._Icons_v2.2\A.I.M. 2.ico
Compression=lzma
SolidCompression=yes

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "basque"; MessagesFile: "compiler:Languages\Basque.isl"
Name: "brazilianportuguese"; MessagesFile: "compiler:Languages\BrazilianPortuguese.isl"
Name: "catalan"; MessagesFile: "compiler:Languages\Catalan.isl"
Name: "czech"; MessagesFile: "compiler:Languages\Czech.isl"
Name: "danish"; MessagesFile: "compiler:Languages\Danish.isl"
Name: "dutch"; MessagesFile: "compiler:Languages\Dutch.isl"
Name: "finnish"; MessagesFile: "compiler:Languages\Finnish.isl"
Name: "french"; MessagesFile: "compiler:Languages\French.isl"
Name: "german"; MessagesFile: "compiler:Languages\German.isl"
Name: "hebrew"; MessagesFile: "compiler:Languages\Hebrew.isl"
Name: "hungarian"; MessagesFile: "compiler:Languages\Hungarian.isl"
Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl"
Name: "norwegian"; MessagesFile: "compiler:Languages\Norwegian.isl"
Name: "polish"; MessagesFile: "compiler:Languages\Polish.isl"
Name: "portuguese"; MessagesFile: "compiler:Languages\Portuguese.isl"
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
Name: "slovak"; MessagesFile: "compiler:Languages\Slovak.isl"
Name: "slovenian"; MessagesFile: "compiler:Languages\Slovenian.isl"
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"

[Files]
Source: "C:\Documents and Settings\PCHELP\Мои документы\My Games\механоиды 2 война кланов моды\дополнения. проги\сокрушитель v 3_2\сокрушитель v 3_2\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\{cm:ProgramOnTheWeb,Сокрушитель}"; Filename: "http://www.skyriver.ru/"
Name: "{group}\{cm:UninstallProgram,Сокрушитель}"; Filename: "{uninstallexe}"

UPDATE.
Я разобрался куда его вставить.но когда скрипт собираю и запускаю ехе.чтобы проверить,устанавливаю,а папки backup нет! скажите что я нетак сделал?

Сообщение отредактировал Страег - 13:04:2008, 09:33
Подняться вверх 
 
Сообщение #289
sergio_ps
Вставить ник
сообщение 14:04:2008, 09:03
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 4
Регистрация: 22:01:2007
Пользователь №: 8 900



Репутация:   0  


Цитата(Ded Mazai @ 25:10:2007, 21:15 ) *
помогите плз, как сделать (или разбить), чтобы в итоге получилось 2-4 exe-шника,чтобы после установки 1го выводился запрос на установку 2го? если так можно, или как упаковать фалы размером 4-8 гб, ведь IS вроде мах пакует 2 гб - у меня ISC5

[Setup]
DiskSpanning=yes
DiskSliceSize=733989400 (размер в байтах)


Сообщение отредактировал sergio_ps - 14:04:2008, 09:04
Подняться вверх 
 
Сообщение #290
Страег
Вставить ник
сообщение 17:04:2008, 15:19
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 2
Регистрация: 13:04:2008
Пользователь №: 16 591



Репутация:   0  


Народ.мне нуно чтобы инсталятор делал резерв копию 6 файлов и одной папки.
Вот:
Бла-бла\Файл1
Бла-бла\Файл2
Бла-бла\Файл3
Бла-бла\Файл4
Бла-бла\Файл5
Бла-бла\Файл6
Бла-бла\папка
Ниже скрипт,поясните нупу как сделать чтобы сохранились резервы того что выше написал?
[Components]
Name: "Backup"; Description: "Сохранить резервные копии файлов"; Types: full

[Types]
Name: "Backup"; Description: "Выборочная установка"; Flags: iscustom

[Files]
Components: Backup; Source: "MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion; Check: MyProgCheck

[Code]

function MyProgCheck():boolean;
var
   s1, s2:string;
begin
Result:=True;
s1:=ExpandConstant('{app}')+'\MyProg.exe';
s2:=ExpandConstant('{app}')+'\Backup';
If FileExists(s1) then
begin
CreateDir(s2);
FileCopy(s1, s2+'\MyProg.exe', False);
end;
end;


Сообщение отредактировал Страег - 17:04:2008, 15:20
Подняться вверх 
 
Сообщение #291


10 страниц V  « < 8 9 10
Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый