Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: sjwrec
Дата сообщения: 21.07.2013 21:08
ultimo
А, это которая вот так пишется 0.0.1.0 - так ведь она не отображается на Windows 7
Автор: jekov
Дата сообщения: 22.07.2013 07:24
Скажите, пожалуйста, можно ли распаковать корректно это http://www.pdfeditor.biz/infix/InfixSetup.exe , да каким компилятором запаковано? Спасибо!
Автор: vint56
Дата сообщения: 22.07.2013 15:51
jekov вот этим можно распаковать Universal Extractor
Автор: jekov
Дата сообщения: 22.07.2013 19:36
vint56
само собой то и делал, но сам скрипт не распакован корректно, ничем не перекомпилировать обратно...
Автор: vint56
Дата сообщения: 22.07.2013 20:29
jekov
http://rghost.ru/47597484
Автор: marineharrison
Дата сообщения: 22.07.2013 21:55
Доброго времени суток. пожалуйста гляньте мой скрипт. скрипт распаковки двух архивов 7zip с разных дисков с запросов. Они одинаковые по размеру, поэтому я не использую records.inf. Как кстати удалить строки о нем из скрипта. Кто разбирается, просьба удалить лишние процедуры, функции, компоненты и др. Прошу помочь.


[more]
#define NeedSize "5000000000"
#define NeedMem 512
#define PackZIP

[Setup]
AppName=ISDone
AppVerName=ISDone
DefaultDirName={pf}\ISDone
DefaultGroupName=ISDone Example
OutputDir=.
OutputBaseFilename=Setup
VersionInfoCopyright=ProFrager
SolidCompression=yes
#ifdef NeedSize
ExtraDiskSpaceRequired={#NeedSize}
#endif

[Registry]
Root: HKLM; Subkey: Software\ProFrager; ValueName: path; ValueType: String; ValueData: {app}; Flags: uninsdeletekey; Check: CheckError
Root: HKLM; Subkey: Software\ProFrager; ValueName: name; ValueType: String; ValueData: Data; Flags: uninsdeletekey; Check: CheckError

[Icons]
Name: {group}\Удалить пример ISDone; Filename: {app}\unins000.exe; WorkingDir: {app}; Check: CheckError
Name: {commondesktop}\Удалить пример ISDone; Filename: {app}\unins000.exe; WorkingDir: {app}; Check: CheckError

[Tasks]
Name: VCCheck; Description: Установить Microsoft Visual C++ 2005 Redist
Name: PhysXCheck; Description: Установить Nvidia PhysX

[Run]
Filename: {src}\Redist\vcredist_x86.exe; Parameters: /q; StatusMsg: Устанавливаем Microsoft Visual C++ 2005 Redist...; Flags: skipifdoesntexist; Tasks: VCCheck; Check: CheckError
Filename: {src}\Redist\PhysX.exe; Parameters: /qn; StatusMsg: Устанавливаем Nvidia PhysX...; Flags: skipifdoesntexist; Tasks: PhysXCheck; Check: CheckError

[Files]
Source: ISDone.dll; DestDir: {tmp}; Flags: dontcopy


#ifdef PackZIP
Source: Include\7z.dll; DestDir: {tmp}; Flags: dontcopy
Source: Include\packZIP.exe; DestDir: {tmp}; Flags: dontcopy
#endif

[CustomMessages]
russian.ExtractedFile=Извлекается файл:
russian.Extracted=Распаковка архивов...
russian.CancelButton=Отменить распаковку
russian.Error=Ошибка распаковки!
russian.ElapsedTime=Прошло:
russian.RemainingTime=Осталось времени:
russian.EstimatedTime=Всего:
russian.AllElapsedTime=Время установки:

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[UninstallDelete]
Type: filesandordirs; Name: {app}

[Code]
const
PCFonFLY=true;
notPCFonFLY=false;
var
LabelPct1,LabelCurrFileName,LabelTime1,LabelTime2,LabelTime3: TLabel;
ISDoneProgressBar1: TNewProgressBar;

MyCancelButton: TButton;
ISDoneCancel:integer;
ISDoneError:boolean;
PCFVer:double;

type
TCallback = function (OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;

function WrapCallback(callback:TCallback; paramcount:integer):longword;external 'wrapcallback@files:ISDone.dll stdcall delayload';

function ISArcExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath, ExtractedPath: AnsiString; DeleteInFile:boolean; Password, CfgFile, WorkPath: AnsiString; ExtractPCF: boolean ):boolean; external 'ISArcExtract@files:ISDone.dll stdcall delayload';
function IS7ZipExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):boolean; external 'IS7zipExtract@files:ISDone.dll stdcall delayload';
function ISRarExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath: AnsiString; DeleteInFile:boolean; Password: AnsiString):boolean; external 'ISRarExtract@files:ISDone.dll stdcall delayload';
function ISPrecompExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):boolean; external 'ISPrecompExtract@files:ISDone.dll stdcall delayload';
function ISSRepExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString; DeleteInFile:boolean):boolean; external 'ISSrepExtract@files:ISDone.dll stdcall delayload';
function ISxDeltaExtract(CurComponent:Cardinal; PctOfTotal:double; minRAM,maxRAM:integer; InName, DiffFile, OutFile: AnsiString; DeleteInFile, DeleteDiffFile:boolean):boolean; external 'ISxDeltaExtract@files:ISDone.dll stdcall delayload';
function ISPackZIP(CurComponent:Cardinal; PctOfTotal:double; InName, OutFile: AnsiString;ComprLvl:integer; DeleteInFile:boolean):boolean; external 'ISPackZIP@files:ISDone.dll stdcall delayload';
function ShowChangeDiskWindow(Text, DefaultPath, SearchFile:AnsiString):boolean; external 'ShowChangeDiskWindow@files:ISDone.dll stdcall delayload';

function Exec2 (FileName, Param: PAnsiChar;Show:boolean):boolean; external 'Exec2@files:ISDone.dll stdcall delayload';
function ISFindFiles(CurComponent:Cardinal; FileMask:AnsiString; var ColFiles:integer):integer; external 'ISFindFiles@files:ISDone.dll stdcall delayload';
function ISPickFilename(FindHandle:integer; OutPath:AnsiString; var CurIndex:integer; DeleteInFile:boolean):boolean; external 'ISPickFilename@files:ISDone.dll stdcall delayload';
function ISGetName(TypeStr:integer):PAnsichar; external 'ISGetName@files:ISDone.dll stdcall delayload';
function ISFindFree(FindHandle:integer):boolean; external 'ISFindFree@files:ISDone.dll stdcall delayload';
function ISExec(CurComponent:Cardinal; PctOfTotal,SpecifiedProcessTime:double; ExeName,Parameters,TargetDir,OutputStr:AnsiString;Show:boolean):boolean; external 'ISExec@files:ISDone.dll stdcall delayload';

function SrepInit(TmpPath:PAnsiChar;VirtMem,MaxSave:Cardinal):boolean; external 'SrepInit@files:ISDone.dll stdcall delayload';
function PrecompInit(TmpPath:PAnsiChar;VirtMem:cardinal;PrecompVers:single):boolean; external 'PrecompInit@files:ISDone.dll stdcall delayload';
function FileSearchInit(RecursiveSubDir:boolean):boolean; external 'FileSearchInit@files:ISDone.dll stdcall delayload';
function ISDoneInit(RecordFileName:AnsiString; TimeType,Comp1,Comp2,Comp3:Cardinal; WinHandle, NeededMem:longint; callback:TCallback):boolean; external 'ISDoneInit@files:ISDone.dll stdcall';
function ISDoneStop:boolean; external 'ISDoneStop@files:ISDone.dll stdcall';
function ChangeLanguage(Language:AnsiString):boolean; external 'ChangeLanguage@files:ISDone.dll stdcall delayload';
function SuspendProc:boolean; external 'SuspendProc@files:ISDone.dll stdcall';
function ResumeProc:boolean; external 'ResumeProc@files:ISDone.dll stdcall';

function ProgressCallback(OveralPct,CurrentPct: integer;CurrentFile,TimeStr1,TimeStr2,TimeStr3:PAnsiChar): longword;
begin
if OveralPct<=1000 then ISDoneProgressBar1.Position := OveralPct;
LabelPct1.Caption := IntToStr(OveralPct div 10)+'.'+chr(48 + OveralPct mod 10)+'%';

LabelCurrFileName.Caption:=ExpandConstant('{cm:ExtractedFile} ')+MinimizePathName(CurrentFile, LabelCurrFileName.Font, LabelCurrFileName.Width-ScaleX(100));
LabelTime1.Caption:=ExpandConstant('{cm:ElapsedTime} ')+TimeStr2;
LabelTime2.Caption:=ExpandConstant('{cm:RemainingTime} ')+TimeStr1;
LabelTime3.Caption:=ExpandConstant('{cm:AllElapsedTime}')+TimeStr3;
Result := ISDoneCancel;
end;

procedure CancelButtonOnClick(Sender: TObject);
begin
SuspendProc;
if MsgBox(SetupMessage(msgExitSetupMessage), mbConfirmation, MB_YESNO) = IDYES then ISDoneCancel:=1;
ResumeProc;
end;

procedure HideControls;
begin
WizardForm.FileNamelabel.Hide;
ISDoneProgressBar1.Hide;
LabelPct1.Hide;
LabelCurrFileName.Hide;
LabelTime1.Hide;
LabelTime2.Hide;
MyCancelButton.Hide;
end;

procedure CreateControls;
var PBTop:integer;
begin
PBTop:=ScaleY(50);
ISDoneProgressBar1 := TNewProgressBar.Create(WizardForm);
with ISDoneProgressBar1 do begin
Parent := WizardForm.InstallingPage;
Height := WizardForm.ProgressGauge.Height;
Left := ScaleX(0);
Top := PBTop;
Width := ScaleX(365);
Max := 1000;
end;
LabelPct1 := TLabel.Create(WizardForm);
with LabelPct1 do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Left := ISDoneProgressBar1.Width+ScaleX(5);
Top := ISDoneProgressBar1.Top + ScaleY(2);
Width := ScaleX(80);
end;
LabelCurrFileName := TLabel.Create(WizardForm);
with LabelCurrFileName do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Width := ISDoneProgressBar1.Width+ScaleX(30);
Left := ScaleX(0);
Top := ScaleY(30);
end;
LabelTime1 := TLabel.Create(WizardForm);
with LabelTime1 do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Width := ISDoneProgressBar1.Width div 2;
Left := ScaleX(0);
Top := PBTop + ScaleY(35);
end;
LabelTime2 := TLabel.Create(WizardForm);
with LabelTime2 do begin
Parent := WizardForm.InstallingPage;
AutoSize := False;
Width := LabelTime1.Width+ScaleX(40);
Left := ISDoneProgressBar1.Width div 2;
Top := LabelTime1.Top;
end;
LabelTime3 := TLabel.Create(WizardForm);
with LabelTime3 do begin
Parent := WizardForm.FinishedPage;
AutoSize := False;
Width := 300;
Left := 180;
Top := 200;
end;
MyCancelButton:=TButton.Create(WizardForm);
with MyCancelButton do begin
Parent:=WizardForm;
Width:=ScaleX(130);
Caption:=ExpandConstant('{cm:CancelButton}');
Left:=ScaleX(360);
Top:=WizardForm.cancelbutton.top;
OnClick:=@CancelButtonOnClick;
end;
end;

Procedure CurPageChanged(CurPageID: Integer);
Begin
if (CurPageID = wpFinished) and ISDoneError then
begin
LabelTime3.Hide;
WizardForm.Caption:= ExpandConstant('{cm:Error}');
WizardForm.FinishedLabel.Font.Color:= clRed;
WizardForm.FinishedLabel.Caption:= SetupMessage(msgSetupAborted) ;
end;
end;

function CheckError:boolean;
begin
result:= not ISDoneError;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var Comps1,Comps2,Comps3, TmpValue:cardinal;
FindHandle1,ColFiles1,CurIndex1,tmp:integer;
ExecError:boolean;
InFilePath,OutFilePath,OutFileName:PAnsiChar;
begin
if CurStep = ssInstall then begin //Если необходимо, можно поменять на ssPostInstall
WizardForm.ProgressGauge.Hide;
WizardForm.CancelButton.Hide;
CreateControls;
WizardForm.StatusLabel.Caption:=ExpandConstant('{cm:Extracted}');
ISDoneCancel:=0;

// Распаковка всех необходимых файлов в папку {tmp}.


#ifdef PackZIP
ExtractTemporaryFile('7z.dll');
ExtractTemporaryFile('PackZIP.exe');
#endif


// Подготавливаем переменную, содержащую всю информацию о выделенных компонентах для ISDone.dll
// максимум 96 компонентов.
Comps1:=0; Comps2:=0; Comps3:=0;


ISDoneError:=true;
if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin
repeat
// ChangeLanguage('English');
if not SrepInit('',512,0) then break;
if not PrecompInit('',128,PCFVer) then break;
if not FileSearchInit(true) then break;


// далее находятся закомментированые примеры различных функций распаковки (чтобы каждый раз не лазить в справку за примерами)


if not IS7ZipExtract (0, 50, ExpandConstant('{src}\include.7z'), ExpandConstant('{app}'), false, '') then break;

if not ShowChangeDiskWindow ('Пожалуйста, вставьте второй диск и дождитесь его инициализации.', ExpandConstant('{src}'),'Modules.7z') then break;

if not IS7ZipExtract (0, 50, ExpandConstant('{src}\Modules.7z'), ExpandConstant('{app}'), false, '') then break;



ISDoneError:=false;
until true;
ISDoneStop;
end;
HideControls;
WizardForm.CancelButton.Visible:=true;
WizardForm.CancelButton.Enabled:=false;
end;
if (CurStep=ssPostInstall) and ISDoneError then begin
Exec2(ExpandConstant('{uninstallexe}'), '/VERYSILENT', false);
end;
end;
[/more]
Автор: 999Kay666
Дата сообщения: 23.07.2013 13:58
Здравствуйте.
Это то, что я сумел сделать сам:

Код:
[Setup]
AppName=Mafia Mod
AppVerName=0.0
DefaultDirName={sd}\Mafia
OutputDir=C:\Users\Kain\Desktop
SetupIconFile=C:\Users\Kain\Desktop\Icon_1.ico
DisableWelcomePage=yes
DisableFinishedPage=yes
DisableReadyPage=yes
Uninstallable=no
UninstallDisplayName=no
DirExistsWarning=no
;DirExistsWarning- избавиться от этого сообщения "Папка УЖЕ СУЩЕСТВУЕТ, установить тута же?"
Compression=lzma
SolidCompression=yes

[Languages]
Name: ru; MessagesFile: "compiler:Russian.isl"

[Code]
//отмена установки без вопросов
procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
begin
Cancel:=True;
Confirm:=False;
end;
//изменить имя кнопки
procedure CurPageChanged(CurPageID: Integer);
begin
If WizardForm.FindComponent('NextButton') is TButton
then
TButton(WizardForm.FindComponent('NextButton')).Caption:='установить';
end;
Автор: brduakh
Дата сообщения: 23.07.2013 14:43
999Kay666
выключить итп можно этой программой, иным словом данная программа - это расширенная оболочка + русский MUI, в итоге тотже инно (только с расширенными возможностями
#
Автор: 999Kay666
Дата сообщения: 23.07.2013 15:50
brduakh
какой программой и что за итп-??
все ненужные страницы уже откл.. Нужно только отредактировать DirPage как на 1ой картинке (убрать надписи, поднять поле пути, и ниже поле компонентов)
попробовал ispack-5.5.3-unicode - того, что нужно сделать нельзя
Автор: vint56
Дата сообщения: 23.07.2013 18:21
999Kay666
[more=пример][Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: text; Description: Язык субтитров; Types: full; Flags: fixed
Name: text\rus; Description: Русский; Flags: exclusive; ExtraDiskSpaceRequired: 100000000
Name: text\eng; Description: Английский; Flags: exclusive; ExtraDiskSpaceRequired: 200000000
Name: voice; Description: Язык озвучки; Types: full; Flags: fixed
Name: voice\rus; Description: Русский; Flags: exclusive; ExtraDiskSpaceRequired: 500000000
Name: voice\eng; Description: Английский; Flags: exclusive; ExtraDiskSpaceRequired: 600000000

[Code]
procedure InitializeWizard();
begin
WizardForm.SelectDirBitmapImage.Hide;
WizardForm.SelectDirLabel.Hide;
WizardForm.SelectDirBrowseLabel.Hide;
WizardForm.DiskSpaceLabel.Hide;
WizardForm.DirEdit.Top := ScaleY(0);
WizardForm.DirBrowseButton.Top := ScaleY(0);
WizardForm.ComponentsList.Top := ScaleY(30);
WizardForm.ComponentsList.Height := ScaleY(200);
WizardForm.ComponentsList.Parent := WizardForm.SelectDirPage;
end;

// пропуск страниц
function ShouldSkipPage(PageID: Integer): Boolean;
begin
// wpWelcome = 1;
// wpLicense = 2;
// wpPassword = 3;
// wpInfoBefore = 4;
// wpUserInfo = 5;
// wpSelectDir = 6;
// wpSelectComponents = 7;
// wpSelectProgramGroup = 8;
// wpSelectTasks = 9;
// wpReady = 10;
// wpPreparing = 11;
// wpInstalling = 12;
// wpInfoAfter = 13;
// wpFinished = 14;
// if (PageID = wpSelectComponents)or(PageID = 10)or(PageID = 14) then
if (PageID = 1) or (PageID = 7) or(PageID = 10) then
Result:= True;
end;[/more]
Автор: 999Kay666
Дата сообщения: 23.07.2013 18:35
vint56
!!! то, что нужно спасибо.!!!!
вы не могли бы пояснить: зачем эта функция....
function ShouldSkipPage(PageID: Integer): Boolean;
begin
// wpWelcome = 1;
...
// wpFinished = 14;
// if (PageID = wpSelectComponents)or(PageID = 10)or(PageID = 14) then

если стереть слеши - работать не будет (я думал после слеша пишутся комментарии)?

разобрался. дошло
Автор: vint56
Дата сообщения: 23.07.2013 18:47
999Kay666 это пример пропуск станиц
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID = 1) or (PageID = 7) or(PageID = 10) then какие страницы пропустить 1 7 10
Result:= True;
end;
названия страниц и номирация
// wpWelcome = 1;
// wpLicense = 2;
// wpPassword = 3;
// wpInfoBefore = 4;
// wpUserInfo = 5;
// wpSelectDir = 6;
// wpSelectComponents = 7;
// wpSelectProgramGroup = 8;
// wpSelectTasks = 9;
// wpReady = 10;
// wpPreparing = 11;
// wpInstalling = 12;
// wpInfoAfter = 13;
// wpFinished = 14; то что закаментировано то не работает
Автор: Sanch8
Дата сообщения: 23.07.2013 18:57
999Kay666

Немного [more=поправил][Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DisableWelcomePage=yes
DisableFinishedPage=yes
DisableReadyPage=yes

[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: text; Description: Mod1; Types: full;
Name: text; Description: Mod2; Types: full;
Name: text; Description: Mod3; Types: full;
Name: text; Description: Mod4; Types: full;
Name: text; Description: Mod5; Types: full;
Name: text; Description: Mod6; Types: full;
Name: text; Description: Mod7; Types: full;
Name: text; Description: Mod8; Types: full;
Name: text; Description: Mod9; Types: full;
Name: text; Description: Mod10; Types: full;
Name: text; Description: Mod11; Types: full;
Name: text; Description: Mod12; Types: full;
Name: text; Description: Mod13; Types: full;
Name: text; Description: Mod14; Types: full;
Name: text; Description: Mod15; Types: full;
Name: text; Description: Mod16; Types: full;
Name: text; Description: Mod17; Types: full;
Name: text; Description: Mod18; Types: full;
Name: text; Description: Mod19; Types: full;
Name: text; Description: Mod20; Types: full;

[Code]

procedure InitializeWizard();
begin
WizardForm.Caption := 'Пример';
WizardForm.DirEdit.Top := ScaleY(1);
WizardForm.DirBrowseButton.Top := ScaleY(0);
WizardForm.ComponentsList.Parent := WizardForm.SelectDirPage;
WizardForm.ComponentsList.SetBounds(ScaleX(0),ScaleY(37),ScaleX(415),ScaleY(175));
WizardForm.SelectDirLabel.Hide
WizardForm.SelectDirBrowseLabel.Hide
WizardForm.SelectDirBitmapImage.Hide
end;


procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=wpSelectDir then
WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall)
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID = 7) or(PageID = 10) then
Result:= True;
end;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:= False;
end;[/more]

Автор: haladar
Дата сообщения: 23.07.2013 23:38
Всем привет, ребят, может кто помочь подключить к инсталлятору модуль free arc ?
Или киньте гайд, как это сделать
Автор: yuwik
Дата сообщения: 24.07.2013 09:43
Подскажите, как через реестр реализовать, если игра установлена, вызывается деинсталлятор, игра удаляется и закрывается установщик
И ещё - как убрать в ISDone строку распаковки файлов и "осталось" - время
Первую часть вопроса - снимаю, разобрался сам
Автор: marineharrison
Дата сообщения: 24.07.2013 20:02
товарищи, поглядите мой скрипт в предыдущем посте.
Автор: 999Kay666
Дата сообщения: 27.07.2013 07:09
vint56
спасибо за разъяснения.
Sanch8
спасибо! учёл.
Автор: Uhtoong
Дата сообщения: 28.07.2013 13:37
Уважаемые!

Подскажите мне вот что - Есть игра repack от fenixx batham arkham assylum размером 5 с лишним гиг.
Требуется переделать этот репак под 2dvd болванки. Пробовал просто записать setup.exe и прочие файлы на 1 болванку, и оставшиеся gamex.bin на 2 болванку. При проверке дойдя до файлов 2 болванки, болванку №2 не просит, пишет ошибка файл не найдет. Распаковал exe файл, посмотрел install_script.iss. Как там запрашивает другую болванку не нашел. Распаковал exe от другого repack'а, другой игры где запрашивает другую болванку, install_script.iss очень похож на предыдущий и опять не могу понять где запрос на другую болванку.

Подскажите пож. где прописывают запрос на установку другой болванки?
Автор: Tima614555
Дата сообщения: 28.07.2013 14:17
Помогите так же создать как на скрине?

Мой скрипт:
[more] ; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

#define MyAppName "GTA Criminal Russia"
#define MyAppVersion "1.0"
#define MyAppExeName "gta_sa.exe"

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{FF5A30F3-96DD-40DF-B240-3CEB256CB63F}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
DefaultDirName=C:\Games\{#MyAppName}
DefaultGroupName={#MyAppName}
AllowNoIcons=true
OutputDir=C:\Users\Тима\Desktop
OutputBaseFilename=GTA Criminal Russia
Compression=lzma/ultra
SolidCompression=true
DiskSpanning=true
DiskClusterSize=4096
DiskSliceSize=2000000000

[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked

[Files]
Source: C:\Games\GTA Criminal Russia\gta_sa.exe; DestDir: {app}; Flags: ignoreversion
Source: C:\Games\GTA Criminal Russia\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: {group}\{#MyAppName}; Filename: {app}\{#MyAppExeName}
Name: {group}\{cm:UninstallProgram,{#MyAppName}}; Filename: {uninstallexe}
Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon

[Run]
Filename: {app}\{#MyAppExeName}; Description: {cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}; Flags: nowait postinstall skipifsilent[/more]
Автор: realart
Дата сообщения: 28.07.2013 15:59
Здравствуйте! Надеюсь на помощь специалистов. Есть программа на Delphi, которая использует функцию FileExists (проверка наличия файла на носителе). Для этой программы в Inno Setup создан инсталлятор. Однако, после установки программы наблюдается интересная особенность: при запуске программы через ярлыки, автоматически создаваемые Inno, функция FileExists в программе возвращает False, т. е. перестает работать корректно. Проверки, которые я осуществил:
1) физически файл, естественно, на диске имеется;
2) FileExists=True, если запускать программу прямо из Program Files;
3) FileExists=True, если запускать программу через ярлык, созданный непосредственно от exe-файла;
4) FileExists=True, если ярлыки создает другой инсталлятор (например, Advanced Installer);
5) перезагрузка ОС не помогает.
Есть предположение, что что-то не срабатывает с правами доступа, хотя возможно ли это?
Буду признателен за помощь в данном вопросе.
Автор: quorg
Дата сообщения: 28.07.2013 17:19
realart
Я думаю полезно скинуть архив с программой и скриптом, так уже точно помогут
Автор: marineharrison
Дата сообщения: 31.07.2013 19:06
есть кто живой???
Автор: realart
Дата сообщения: 31.07.2013 19:13
да, я постараюсь подготовить пример.

Добавлено:
www.content.dystlab.com/temp/test_fileexists+inno.zip
Это архив со всеми исходниками: тестовая программа с одной-единственной функцией - FileExists; инсталлятор этой программы.
Ошибка возникает та же - ярлыки, созданные в Inno Setup, запускают программу, но FileExists=False. В других случаях FileExists=True.
Заранее благодарен за помощь!
Автор: 999Kay666
Дата сообщения: 01.08.2013 02:15
Парни, расскажите о горячих клавишах Inno Setup Compiler.

Меня, в частности, интересует "закомментировать/раскомментировать кусок(несколько строк сразу) кода".

МОДЕРАТОРЫ, может стоит данную ИНФОРМАЦИЮ включить В ШАПКУ (было бы очень полезно).
Автор: nik1967
Дата сообщения: 01.08.2013 13:00
realart
Причина - не указана рабочая папка.

Код: Name: "{commondesktop}\Моя программа"; Filename: "{app}\Project1.exe"; Workingdir: {app}; Tasks: desktopicon
Автор: sjwrec
Дата сообщения: 01.08.2013 18:14
999Kay666

Цитата:
может стоит данную ИНФОРМАЦИЮ включить В ШАПКУ (было бы очень полезно).

Чтобы включить информацию в шапку, нужно сначала выложить её здесь.

Inno Compiller - понимает практически все горячие клавиши редактирования, такие как:
Сtrl+А - Выделить всё, Сtrl+Z - отмена, Ctrl+V или Shift+Insert - вставка и.т.д.
Автор: realart
Дата сообщения: 01.08.2013 20:26
Спасибо! Добавление рабочей папки решило проблему.
Автор: Daniyar91
Дата сообщения: 01.08.2013 22:39

Цитата:
...интересует "закомментировать/раскомментировать кусок(несколько строк сразу)...

а с чего ты решил что редактор Inno Setup такое умеет, пользуйся другим редактором например SynWrite или Inno Script Studio.
Автор: 999Kay666
Дата сообщения: 02.08.2013 07:17
Daniyar91

Цитата:
а с чего ты решил Inno Setup такое умеет

а с чего ты решил, что он этого не умеет.

Цитата:
пользуйся другим редактором

тебе надо - ты и пользуйся
sjwrec

Цитата:
Чтобы включить информацию в шапку, нужно сначала выложить её здесь.

тебе не лень, смотрю, печатать чушь

Люди, скажите как закомментировать/раскомментировать кусок(несколько строк сразу) кода
Автор: SotM
Дата сообщения: 02.08.2013 07:43
999Kay666

Цитата:
а с чего ты решил, что он этого не умеет.

Ты потролить решил что ли?
Тебе уже сказали что этот редактор не умеет рас/комментировать блок. Где ты в меню этого редактора увидел такой функционал?!

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177

Предыдущая тема: поиск


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.