Написание скрипта для инсталлятора

  • Автор темы Kindly
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

AdiSan

Вопрост по Inno Setup 5. Может он уже где-то обсуждался, но по поиску найти не удалось, а
очень надо. Так вот: вместе со своей прогой в инсталлятор пихаю несколько Dll без которых
она не прет, не прет она и если эти Dll не зарегены в реестре, собсно, как это сделать? ПРиведите пжалста пример скрипта. Заранее благодарю.
 
N

Nightw0lf

AdiSan
не прет она и если эти Dll не зарегены в реестре, собсно, как это сделать? Риведите пжалста пример скрипта. Заранее благодарю.
Вот пример регистрации библиотеки:
Код:
[code]
Source: "C:\msxml4.dll"; DestDir: "{sys}"; Flags: restartreplace sharedfile regserver
 
A

AdiSan

И всего то одна строчка. Nightw0lf, большой сэнкс.
 
G

Guest

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

Nightw0lf

Димбай
и если можно подскажите как при деинсталяции вернуть оригинальные файлы.Надеюсь что подскажите.
Я так понял тебе нужно сдела резерную копию оригинальных файлов, а при деинсталляции вернуть все обратно? Если да то вот:
Код:
#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;

Скачать файл

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

Guest

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

Ded Mazai

помогите плз, как сделать (или разбить), чтобы в итоге получилось 2-4 exe-шника,чтобы после установки 1го выводился запрос на установку 2го? если так можно, или как упаковать фалы размером 4-8 гб, ведь IS вроде мах пакует 2 гб - у меня ISC5
 
G

Guest

Всем добрый день.нужно вставить этот код:
Код:
[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 нет! скажите что я нетак сделал?
 
S

sergio_ps

помогите плз, как сделать (или разбить), чтобы в итоге получилось 2-4 exe-шника,чтобы после установки 1го выводился запрос на установку 2го? если так можно, или как упаковать фалы размером 4-8 гб, ведь IS вроде мах пакует 2 гб - у меня ISC5
Код:
[Setup]
DiskSpanning=yes 
DiskSliceSize=733989400 (размер в байтах)
 
G

Guest

Народ.мне нуно чтобы инсталятор делал резерв копию 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;
 
S

Strider

Всем привет! есть пару вопросов по инсталятору...юзаю Instalshield, создал к проге инсталятор(все гуд), при запуске и распаковке все гуд, потом нач проблемы: не создает прогу и файлы которые к ней относятся в место установки(C:\Program File\1\)почему?, создает в реестре запись о создании проги(но так как ее нету то и созданий ярлык на роб.столе, и в пуске не запустятся так как нету указанного пути к файлу),
в разделе Remove Program существует запись о созданной проге (но ни размера ни Support Info не ту указаных атребутов(Версия, изготовитель и.тд.)), подскажите в чем может быть проблем...??
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!