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

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

Автор: NightW0lf
Дата сообщения: 10.04.2007 23:39
Cash xXx

Цитата:
procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssPostInstall
then
begin
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$app_data_root$=true|false|' + ExpandConstant('{commondocs}\STALKER-SHOC')+ #13, True);
end;
end;

Работает, НО не совсем так как надо. А именно получается - "$app_data_root$=true|false|C:\Documents and Settings\All Users\Документы\STALKER-SHOC" за место "$app_data_root$=true|false|C:\|Documents and Settings\All Users\Документы\STALKER-SHOC\" + еще при создание этой строки происходит полное стирание всех дргиух, а именно:
[more=Другие строки]
$game_data$         = false|    true|    $fs_root$|        gamedata\
$game_ai$         = true|        false|    $game_data$|        ai\
$game_spawn$     = true|        false|    $game_data$|        spawns\
$game_anims$         = true|        true|    $game_data$|        anims\
$game_levels$     = true|        false|    $game_data$|        levels\
$game_meshes$     = true|        true|    $game_data$|        meshes\
$game_dm$         = true|        true|    $game_data$|        meshes\
$game_shaders$     = true|        true|    $game_data$|        shaders\
$game_sounds$     = true|        true|    $game_data$|        sounds\
$game_textures$     = true|        true|    $game_data$|        textures\
$game_scripts$     = true|        false|    $game_data$|        scripts\
$game_config$     = true|        false|    $game_data$|        config\
$level$         = false|    false|    $game_levels$
$game_saves$     = true|        false|    $app_data_root$|    savedgames\
$logs$         = true|        false|    $app_data_root$|    logs\
$screenshots$     = true|        false|    $app_data_root$|    screenshots\
[/more]
Автор: Sampron
Дата сообщения: 11.04.2007 00:18
NightW0lf
Наверно проще сделать как сделал putes.
Автор: Kirill85
Дата сообщения: 11.04.2007 05:08
Народ, помогите! как создать с помощью Inno Setup программу, которая бы удаляла ряд файлов, при этом не создавая инсталлятор (очень здоровый получается)?
Автор: Nagual
Дата сообщения: 11.04.2007 06:19
Kirill85
да такая же фигня, я уже поднимал эту тему, но ответа не получил, имхо размер модуля у инно слишком большой у меня где то 270-290 кб
может есть какте нить модули поменьше специально для таких целей?
кто нить в курсе?
Автор: Sish
Дата сообщения: 11.04.2007 06:59
Kirill85
Nagual
[off] Можно попробовать скрипт на Sign Of Mizery

Удинственный недостаток: некоторые особо рьяные антивири находят в этих скриптах трояна... [/off]
Автор: Chuvakstepan
Дата сообщения: 11.04.2007 09:11
Sampron

Цитата:
NightW0lf
Наверно проще сделать как сделал putes.


Не работает, говорит "не найден файл system.ltx"
Автор: Nagual
Дата сообщения: 11.04.2007 09:46
Sish
SoM пробовал, но так и не смог ему дать выполнить бантик, а тем более нарисовать этот батник командами, поковырялся и плюнул
Автор: Sampron
Дата сообщения: 11.04.2007 11:48
Nagual

Цитата:
выполнить бантик

Автор: putes
Дата сообщения: 11.04.2007 13:17

Цитата:
Sampron

Цитата:
NightW0lf
Наверно проще сделать как сделал putes.

Не работает, говорит "не найден файл system.ltx"

всё работает
вот как выглядит свжеустановленный файл fsgame.ltx


Код: $app_data_root$=true|false|STALKER-SHOC\
$game_data$ = false| true| $fs_root$| gamedata\
$game_ai$ = true| false| $game_data$| ai\
$game_spawn$ = true| false| $game_data$| spawns\
$game_anims$ = true| true| $game_data$| anims\
$game_levels$ = true| false| $game_data$| levels\
$game_meshes$ = true| true| $game_data$| meshes\
$game_dm$ = true| true| $game_data$| meshes\
$game_shaders$ = true| true| $game_data$| shaders\
$game_sounds$ = true| true| $game_data$| sounds\
$game_textures$ = true| true| $game_data$| textures\
$game_scripts$ = true| false| $game_data$| scripts\
$game_config$ = true| false| $game_data$| config\
$level$ = false| false| $game_levels$
$game_saves$ = true| false| $app_data_root$| savedgames\
$logs$ = true| false| $app_data_root$| logs\
$screenshots$ = true| false| $app_data_root$| screenshots\
Автор: Snake_60
Дата сообщения: 11.04.2007 13:32
Ребята, помогите кто сечёт. Создал инсталятор он добавляет папки которые не существовали в проге, но после uninstall эти папки все равно остаются, как сделать правильно, чтобы полностью удалилось после uninstallа.

[more=Вот код] [no]
#include "SHFileOperation.iss"

[Setup]
AppName=Русификатор для CyberLink PowerDVD 7.3 Ultra
AppVerName=Русификатор для CyberLink PowerDVD 7.3 Ultra
AppCopyright=Snake 60
VersionInfoVersion=7.3
VersionInfoCompany=Snake 60 RUS INC. (C) 2006-2007
VersionInfoDescription=Русификатор для CyberLink PowerDVD
Установка\Удаление программ на Панели управления в Windows 2000/XP.
AppPublisher=Packaged by Snake 60
DefaultDirName={pf}\CyberLink\PowerDVD
OutputBaseFilename=setup-russian.translation.cyberlink.powerdvd.7.3.ultra
OutputDir=Output
LicenseFile=tmp_files\License.rtf
InfoBeforeFile=tmp_files\Readme_rus.rtf
Compression=lzma/ultra
SolidCompression=yes
SetupIconFile=data_for_iss\orange-install.ico
WizardImageFile=data_for_iss\WizardImage.bmp
WizardSmallImageFile=data_for_iss\WizardSmallImage.bmp
Uninstallable=yes
UninstallDisplayIcon=data_for_iss\orange-uninstall.ico
UninstallFilesDir={app}\Install_Rus
UninstallLogMode=overwrite
Encryption=yes
Password=****
DisableStartupPrompt=no
DirExistsWarning=no

[LangOptions]
LanguageName=Russian
LanguageID=$0419
LanguageCodePage=1251
DialogFontName=Tahoma
DialogFontSize=8
WelcomeFontName=Tahoma
WelcomeFontSize=11
TitleFontName=Arial
TitleFontSize=29
CopyrightFontName=Arial
CopyrightFontSize=8


[Languages]
Name: "russian"; MessagesFile: "Russian.isl"

[Messages]
StatusExtractFiles=Распаковка файлов русификации...
BeveledLabel=- Russian Translation by Snake 60 - [ALL-SofT.NeT.RU - TeaM]


[Tasks]
Name: "src"; Description: "Создать резервную копию оригинальных файлов"


[Files]
Source: "app_rus_data\Language\Rus\DVD_RES.dll"; DestDir: "{app}\Language\Rus"; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion
Source: "app_rus_data\Language\Rus\OSD_MLang.dll"; DestDir: "{app}\Language\Rus"; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion
Source: "app_rus_data\Language\Rus\PwrDVDRC.dll"; DestDir: "{app}\Language\Rus"; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion
Source: "app_rus_data\Language\Rus\UI_RES.dll"; DestDir: "{app}\Language\Rus"; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion
Source: "app_rus_data\Language.ini"; DestDir: "{app}\Language"; BeforeInstall: CreateBackup; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion
Source: "app_rus_data\ShortCut.ini"; DestDir: "{app}\Language"; BeforeInstall: CreateBackup; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion
Source: "app_rus_data\OLRSubmission\REGrt_RUS.dll"; DestDir: "{app}\OLRSubmission"; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion
Source: "app_rus_data\Trial\TrialRes_Rus.dll"; DestDir: "{app}\Trial"; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion

Source: "tmp_files\BASSMOD.dll"; DestDir: "{tmp}"; Flags: dontcopy noencryption
Source: "tmp_files\music.xm"; DestDir: "{tmp}"; Flags: dontcopy noencryption
Source: "tmp_files\ISTask.dll"; DestDir: "{tmp}"; Flags: dontcopy noencryption

[UninstallDelete]
Type: filesandordirs; Name: "{app}\Language\Rus"
Type: files; Name: "{app}\OLRSubmission\REGrt_RUS.dll"
Type: files; Name: "{app}\Trial\TrialRes_Rus.dll"

[Run]
Filename: "{app}\PowerDVD.exe"; Description: "Запустить русскую версию CyberLink PowerDVD 7.3 Ultra"; Flags: nowait postinstall skipifsilent


[Code]
var
str: string;
MyArray: array of Char;
RestoreDir: TButton;

const
BASS_MUSIC_RAMP = 1; // (только для Fast Tracker .xm)
BASS_MUSIC_RAMPS = 2; // (только для Fast Tracker .xm)
BASS_MUSIC_LOOP = 4; // повторение
BASS_MUSIC_FT2MOD = 16; // играть .MOD как FastTracker 2
BASS_MUSIC_PT1MOD = 32; // играть .MOD как ProTracker 1
BASS_MUSIC_SURROUND = 512; // звучание surround
BASS_MUSIC_SURROUND2 = 1024; // звучание surround (режим 2)

function BASSMOD_Init(device: Integer; freq, flags: DWORD): Boolean;
external 'BASSMOD_Init@files:BASSMOD.dll stdcall delayload';

function BASSMOD_MusicLoad(mem: BOOL; f: PChar; offset: DWORD; length: DWORD; flags: DWORD): Boolean;
external 'BASSMOD_MusicLoad@files:BASSMOD.dll stdcall delayload';

procedure BASSMOD_MusicFree();
external 'BASSMOD_MusicFree@files:BASSMOD.dll stdcall delayload';

function BASSMOD_MusicPlay(): Boolean;
external 'BASSMOD_MusicPlay@files:BASSMOD.dll stdcall delayload';

function BASSMOD_MusicPause(): Boolean;
external 'BASSMOD_MusicPause@files:BASSMOD.dll stdcall delayload';

function BASSMOD_MusicStop(): Boolean;
external 'BASSMOD_MusicStop@files:BASSMOD.dll stdcall delayload';

procedure BASSMOD_Free();
external 'BASSMOD_Free@files:BASSMOD.dll stdcall delayload';


function KillTask(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';

function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload';


procedure ButtonOnClick(Sender: TObject);
begin
WizardForm.DirEdit.Text := ExpandConstant('{pf}\CyberLink\PowerDVD');
end;


procedure PlayButtonOnClick(Sender: TObject);
var
Name1: string;
begin
if not BASSMOD_MusicPlay then
begin
Name1 := ExpandConstant('{tmp}\music.xm');
if BASSMOD_MusicLoad(FALSE, PChar(Name1), 0, 0, BASS_MUSIC_LOOP or BASS_MUSIC_SURROUND) then
BASSMOD_MusicPlay;
end;
end;


procedure PauseButtonOnClick(Sender: TObject);
begin
BASSMOD_MusicPause;
end;


procedure StopButtonOnClick(Sender: TObject);
begin
BASSMOD_MusicStop;
BASSMOD_MusicFree;
end;


//Кнопка создать новую папку в при выборе директории установки
procedure DirOnClick(Sender: TObject);
var
res: Boolean;
UserSelectDir: string;
begin
UserSelectDir := WizardForm.DirEdit.Text;
res := BrowseForFolder('Выберите директорию для установки и нажмите ''ОК''', UserSelectDir, True);
if res then
begin
WizardForm.DirEdit.Text := UserSelectDir;
end;
end;


procedure BevelLabelOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExec('open', 'http://www.all-soft.net.ru', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;


function CheckPassword(Password: string): Boolean;
begin
WizardForm.PasswordEdit.Text := 'Вот и нет пароля';
WizardForm.PasswordPage.Free;
Result := True;
end;


function InitializeSetup(): Boolean;
begin
MyArray := ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
'!', '@', '#', '$', '%', '^', '&', '*', '(', ')'];
Result := True;
begin
//Поиск процесса который надо закрыть
if RunTask('PowerDVD.exe', false) then
begin
if MsgBox('Программа установки русификатора обнаружила, что программа'#13'для которой установится русификатор запушена в данный момент. '#13#13' Закрыть программу?'#13#13 +
'"Да" - закроет и не сохранит измененные настройки в программе.' #13#13 +
'"Нет" - продолжит установку без закрытия. (Настоятельно рекомендуется нажать Да)', mbError, mb_YesNo) = idYes then
begin
KillTask('PowerDVD.exe');
Result := True;
end else
Exit;
end;
Result := True;
end;
end;


//при запуске инсталлятора выполняем вот этот код:
procedure InitializeWizard();
var
Name1: string;
PlayButton, PauseButton, StopButton: TButton;
Panel1: TPanel;
begin
RestoreDir := TButton.Create(WizardForm);
RestoreDir.Width := WizardForm.DirBrowseButton.Width;
RestoreDir.Height := WizardForm.DirBrowseButton.Height;
RestoreDir.Top := WizardForm.DirBrowseButton.Top + RestoreDir.Height + ScaleX(10);
RestoreDir.Left := WizardForm.DirBrowseButton.Left;
RestoreDir.OnClick := @ButtonOnClick;
RestoreDir.Parent := WizardForm.SelectDirPage;
RestoreDir.Visible := True;
RestoreDir.Caption := 'Сбросить';
begin
//Вставляем наш пароль в поле ввода
WizardForm.DirBrowseButton.OnClick := @DirOnClick;

WizardForm.PasswordEdit.Visible := False;
WizardForm.PasswordEdit.Text := '';

ExtractTemporaryFile(ExpandConstant('BASSMOD.dll'));
ExtractTemporaryFile(ExpandConstant('music.xm'));
if not BASSMOD_Init(-1, 44100, 0)
then
begin
MsgBox('BASSMOD не смогла инициализироваться, проигрывание музыки невозможно.', mbError, MB_OK)
BASSMOD_Free;
end
else
begin
Name1 := ExpandConstant('{tmp}\music.xm');
if BASSMOD_MusicLoad(FALSE, PChar(Name1), 0, 0, BASS_MUSIC_LOOP or BASS_MUSIC_SURROUND) then
BASSMOD_MusicPlay;
begin
Panel1 := TPanel.Create(WizardForm);
with Panel1 do
begin
PlayButton := TButton.Create(WizardForm);
PlayButton.Left := 10;
PlayButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
PlayButton.Height := 23; //Высота кнопки
PlayButton.Width := 30; //Ширина кнопки
PlayButton.Caption := '>'; //Название кнопки
PlayButton.OnClick := @PlayButtonOnClick;
PlayButton.Parent := WizardForm;
PlayButton.Cursor := crHand;

PauseButton := TButton.Create(WizardForm);
PauseButton.Left := 45;
PauseButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
PauseButton.Height := 23; //Высота кнопки
PauseButton.Width := 30; //Ширина кнопки
PauseButton.Caption := 'II'; //Название кнопки
PauseButton.OnClick := @PauseButtonOnClick;
PauseButton.Parent := WizardForm;
PauseButton.Cursor := crHand;

StopButton := TButton.Create(WizardForm);
StopButton.Left := 80;
StopButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
StopButton.Height := 23; //Высота кнопки
StopButton.Width := 30; //Ширина кнопки
StopButton.Caption := '[]'; //Название кнопки
StopButton.OnClick := @StopButtonOnClick;
StopButton.Parent := WizardForm;
StopButton.Cursor := crHand;
begin
with WizardForm do begin
with MainPanel do
Height := Height - 0;
with WizardSmallBitmapImage do begin
Left := 0;
Top := 0;
Height := 58; //Размер рисунка
Width := 500; //
end;
with PageNameLabel do begin
Width := Width - 500; //Поставьте здесь значения на 0 если хотите вернуть текст
Left := Left + 100; //
end;
with PageDescriptionLabel do begin
Width := Width - 500; //Поставьте здесь значения на 0 если хотите вернуть текст
Left := Left + 100; //
begin
with WizardForm.BeveledLabel do
begin
Cursor := crHand; //Вид курсора при наведении на текст
OnClick := @BevelLabelOnClick;
Font.Color := clBlue; //Цвет текста
Enabled := True;
end;
end;
end;
end;
end;
end
end;
end;
end;
end;


//Изменяем диалог установки
procedure CurPageChanged(CurPageID: Integer);
var
Name1: string;
i: Integer;
begin
if CurPageID = wpPassword then
begin
WizardForm.PasswordEdit.Text := MyArray[69] + MyArray[69] + MyArray[69] + MyArray[69]
IntToStr(StrToInt(str) - StrToInt(GetDateTimeString('ss', #0, #0)));
WizardForm.NextButton.OnClick(WizardForm.NextButton);
end;
begin
if CurPageID = wpWelcome then
begin
if WizardForm.FindComponent('NextButton') is TButton
then
TButton(WizardForm.FindComponent('NextButton')).Caption := 'Далее >>>'; //текст
if WizardForm.FindComponent('CancelButton') is TButton
then
TButton(WizardForm.FindComponent('CancelButton')).Caption := 'Отмена'; //текст
end;
begin
if CurPageID = wpReady then
begin
if WizardForm.FindComponent('CancelButton') is TButton
then
TButton(WizardForm.FindComponent('CancelButton')).Caption := 'Отмена'; //текст
end;
end;
end;
end;




//При инсталляции, в "бэкап" сохраняются (перемещением) только те файлы,
//которые инсталлятор заменяет. При удалении, эти же файлы восстанавливаются (тоже перемещением).
function MoveFile(const srcFile, destFile: PChar): Integer;
external 'MoveFileA@kernel32.dll stdcall';

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


//Процедура создания резервной копии при выборе пункта "Создать резервную копию оригинальных файлов"
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}\Install_Rus\Backup') + shortPath;
ForceDirectories(ExtractFilePath(destFile));
MoveFile(PChar(srcFile), PChar(destFile));
end;
end;


//Чтобы заставить инсталлятор при нажатии на кнопку "Отмена" выдавать собственное сообщение, следует написать следующую процедуру:
procedure CancelButtonClick(CurPage: Integer; var Cancel, Confirm: Boolean);
begin
Cancel := False;
Confirm := False;
if MsgBox('Вы действительно хотите прервать установку?', mbError, MB_YESNO) = idYes
then
Cancel := true;
end;


{
//Скрыть текущий файл установки (пример - C:\Program\MyProg.exe) во время установки
procedure InitializeWizard();
begin
WizardForm.FileNameLabel.Visible := False;
end;
}


//Функция проверки директории на конкретный файл (пример - EX_chemax68.exe) если файл
//отсутствует то выдается сообщение об ошибке
function NextButtonClick(CurPage: Integer): Boolean;
var
s: string;
begin
str := GetDateTimeString('ss', #0, #0);
Result := True;
if CurPage = 6 then
begin
if (FileSearch('PowerDVD.exe', ExpandConstant('{app}')) = '')
then
begin
s := 'Программа "CyberLink PowerDVD 7.3 Ultra" не найдена в данной директории!'#13#13'Пожалуйста, укажите папку с программу.';
MsgBox(s, mbError, mb_Ok);
Result := False
end;
end;
end;
end.
end;
[/no]
[/more]
Автор: Chuvakstepan
Дата сообщения: 11.04.2007 14:10
putes
Пасиб, всё работает. Респект!


Snake_60

Код: [UninstallDelete]
Type: filesandordirs; Name: "{app}\Имя папки"
Автор: Cash xXx
Дата сообщения: 11.04.2007 15:23
NightW0lf

Тогда просто создай эти строки ниже:


Код: procedure CurStepChanged(CurStep: TSetupStep);
begin
If CurStep=ssPostInstall
then
begin
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$app_data_root$=true|false|' + ExpandConstant('{app}') + '\save\' + #13, True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_data$=false|true|$fs_root$|gamedata\' + #13, True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_ai$=true|false|$game_data$|ai\' + #13, True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_spawn$=true|false|$game_data$|spawns\' + #13, True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_anims$=true|true|$game_data$|anims\' + #13, True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_levels$=true|false|$game_data$|levels\' + #13, True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_meshes$=true|true|$game_data$|meshes\' + #13, True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_dm$=true|true|$game_data$|meshes\' + #13, True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_shaders$=true|true|$game_data$|shaders\' + #13, True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_sounds$=true|true|$game_data$|sounds\' + #13, True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_textures$=true|true|$game_data$|textures\' + #13, True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_scripts$=true|false|$game_data$|scripts\' + #13, True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_config$=true|false|$game_data$|config\' + #13, True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$level$=false|false|$game_levels$' + #13, True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_saves$=true|false|$app_data_root$|savedgames\' + #13, True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$logs$=true|false|$app_data_root$|logs\' + #13, True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$screenshots$=true|false|$app_data_root$|screenshots\' + #13, True);
end;
end;
Автор: Sero
Дата сообщения: 11.04.2007 21:14
Люди,я вставил Background Image и вот что получилось:
http://img402.imageshack.us/my.php?image=screen01as7.jpg
Автор: koc
Дата сообщения: 11.04.2007 22:13
ну что, пора перезжать? 100 страниц
Автор: Sampron
Дата сообщения: 11.04.2007 22:36
Sero
Добавь этот код в свой

[Files]
Source: C:\License.rtf; DestDir: {tmp}; Flags: dontcopy

[Code]
procedure InitializeWizard();
var
License: string;
begin
ExtractTemporaryFile('License.rtf')
LoadStringFromFile(ExpandConstant('{tmp}') + '\License.rtf', License)
WizardForm.LicenseMemo.RTFText:=License
end;
Автор: NightW0lf
Дата сообщения: 11.04.2007 22:39
Sero

Цитата:
Люди,я вставил Background Image и вот что получилось:
http://img402.imageshack.us/my.php?image=screen01as7.jpg

Ты используешь в качетсве лицензии RTF файл?
Если до то вот код чтобы устранить эту ошибку:
[more=Код]

Код:
;RTF файлы
Source: "License.rtf"; DestDir: "{tmp}"; Flags: dontcopy noencryption
Source: "Readme_rus.rtf"; DestDir: "{tmp}"; Flags: dontcopy noencryption
[code]
procedure InitializeWizard();
var
License: string;
Readmerus: string;

//===============твой-код==============//

WizardForm.Position := poScreenCenter;
MainForm.BORDERSTYLE := bsNone; //После этих двух строк вставляй те которые ниже


ExtractTemporaryFile('License.rtf');
LoadStringFromFile(ExpandConstant('{tmp}') + '\License.rtf', License)
WizardForm.LicenseMemo.RTFText := License;

ExtractTemporaryFile('Readme_rus.rtf');
LoadStringFromFile(ExpandConstant('{tmp}') + '\Readme_rus.rtf', Readmerus)
WizardForm.InfoBeforeMemo.RTFText := Readmerus;

//===============твой-код==============//
Автор: Sero
Дата сообщения: 11.04.2007 23:23
Sampron
NightW0lf
Спасибо!
P.S. тоже самое и на странице Компонентов...


Добавлено:
И за чего происходит это?
Автор: Sampron
Дата сообщения: 11.04.2007 23:36
из-за фонового окна с WindowVisible=no
Автор: Sero
Дата сообщения: 11.04.2007 23:43
Sampron

Цитата:
P.S. тоже самое и на странице Компонентов...

А как исправить это?
Автор: Sampron
Дата сообщения: 11.04.2007 23:53
Sero
Это уже незнаю если для игрового инсталятора с выбором языка то могу дать код с новой страницой выбора компонентов.

Добавлено:
хм... у меня всё нормально показывает

[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
LicenseFile=C:\License.rtf
InfoBeforeFile=C:\License.rtf

[Types]
Name: custom; Description: Custom; Flags: iscustom

[Components]
Name: Component1; Description: Component1; Flags: exclusive
Name: Component2; Description: Component2; Flags: exclusive

[Files]
Source: C:\Image.bmp; DestDir: {tmp}; Flags: dontcopy
Source: C:\License.rtf; DestDir: {app}; Components: Component1
Source: C:\License.rtf; DestDir: {app}; Components: Component2

[Code]
function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';

procedure InitializeWizard();
var
BackImage: TBitmapImage;
Width,Height: Integer;
s: string;
begin
WizardForm.Position:=poScreenCenter
Width:=GetSystemMetrics(0)
Height:=GetSystemMetrics(1)
MainForm.BORDERSTYLE:=bsNone
MainForm.Visible:=True
MainForm.Left:=0
MainForm.Top:=0
MainForm.Width:=Width
MainForm.Height:=Height
ExtractTemporaryFile('Image.bmp')
s:=ExpandConstant('{tmp}')+'\Image.bmp'
BackImage:=TBitmapImage.Create(MainForm)
BackImage.Bitmap.LoadFromFile(s)
BackImage.Align:=alClient
BackImage.Parent:=MainForm
BackImage.Stretch:=True
end;
Автор: Kindly
Дата сообщения: 12.04.2007 10:29
NightW0lf


Цитата:
Работает, НО не совсем так как надо. А именно получается - "$app_data_root$=true|false|C:\Documents and Settings\All Users\Документы\STALKER-SHOC" за место "$app_data_root$=true|false|C:\|Documents and Settings\All Users\Документы\STALKER-SHOC\" + еще при создание этой строки происходит полное стирание всех дргиух, а именно

В игровой инсталлятор включаем пустой файл 'fsgame.ltx' и юзаем такой код:


Код: procedure CurStepChanged(CurStep: TSetupStep);
var
S: String;
begin
If CurStep=ssPostInstall then
begin
S := ExpandConstant('{commondocs}\STALKER-SHOC\')
//меняем на то, что нужно, благо, эти символы встречаются в файле только один раз
StringChangeEx(S, ':\', ':\|', True);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$app_data_root$=true|false|' + S + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_data$         = false|    true|    $fs_root$|        gamedata\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_ai$         = true|        false|    $game_data$|        ai\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_spawn$     = true|        false|    $game_data$|        spawns\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_anims$         = true|        true|    $game_data$|        anims\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_levels$     = true|        false|    $game_data$|        levels\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_meshes$     = true|        true|    $game_data$|        meshes\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_dm$         = true|        true|    $game_data$|        meshes\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_shaders$     = true|        true|    $game_data$|        shaders\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_sounds$     = true|        true|    $game_data$|        sounds\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_textures$     = true|        true|    $game_data$|        textures\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_scripts$     = true|        false|    $game_data$|        scripts\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_config$     = true|        false|    $game_data$|        config\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$level$         = false|    false|    $game_levels$' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$game_saves$     = true|        false|    $app_data_root$|    savedgames\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$logs$         = true|        false|    $app_data_root$|    logs\' + #13, true);
SaveStringToFile(ExpandConstant('{app}')+'\fsgame.ltx', '$screenshots$     = true|        false|    $app_data_root$|    screenshots\' + #13, true);
end;
end;
Автор: Sero
Дата сообщения: 12.04.2007 12:44
Sampron
Если использовать флаг Exclusive то все нормально,а если нет - чекбоксы не видны.
P.S. Компоненты нужны не для выбора языка.
Автор: NightW0lf
Дата сообщения: 12.04.2007 13:15
Sero

Цитата:
Если использовать флаг Exclusive то все нормально,а если нет - чекбоксы не видны.
P.S. Компоненты нужны не для выбора языка.

Тогда попробуй сделать выбор языков на странице с дополнительными задачами [Tasks], там почти также как и в [Components].
Автор: Sampron
Дата сообщения: 12.04.2007 13:29
Sero

Цитата:
Если использовать флаг Exclusive то все нормально,а если нет - чекбоксы не видны.

Все чекбоксы видны

[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
LicenseFile=C:\License.rtf
InfoBeforeFile=C:\License.rtf

[Types]
Name: full; Description: Full installation
Name: compact; Description: Compact installation
Name: custom; Description: Custom installation; Flags: iscustom

[Components]
Name: Component1; Description: Component1; Types: full
Name: Component2; Description: Component2; Types: compact
Name: Component3; Description: Component3; Types: full compact

[Files]
Source: C:\Image.bmp; DestDir: {tmp}; Flags: dontcopy
Source: C:\License.rtf; DestDir: {app}; Components: Component1
Source: C:\License.rtf; DestDir: {app}; Components: Component2
Source: C:\License.rtf; DestDir: {app}; Components: Component3

[Code]
function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';

procedure InitializeWizard();
var
BackImage: TBitmapImage;
Width,Height: Integer;
s: string;
begin
WizardForm.Position:=poScreenCenter
Width:=GetSystemMetrics(0)
Height:=GetSystemMetrics(1)
MainForm.BORDERSTYLE:=bsNone
MainForm.Visible:=True
MainForm.Left:=0
MainForm.Top:=0
MainForm.Width:=Width
MainForm.Height:=Height
ExtractTemporaryFile('Image.bmp')
s:=ExpandConstant('{tmp}')+'\Image.bmp'
BackImage:=TBitmapImage.Create(MainForm)
BackImage.Bitmap.LoadFromFile(s)
BackImage.Align:=alClient
BackImage.Parent:=MainForm
BackImage.Stretch:=True
end;
Автор: Sero
Дата сообщения: 12.04.2007 14:24
NightW0lf
Sampron
Все,разобрался!
Автор: Snake_60
Дата сообщения: 12.04.2007 14:56
Chuvakstepan
Спасибо, торнул носом в нужное направление

to ALL
Но есть еще проблемка...

Код: Source: "app_rus_data\Language.ini"; DestDir: "{app}\Language"; BeforeInstall: CreateBackup; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion
Source: "app_rus_data\ShortCut.ini"; DestDir: "{app}\Language"; BeforeInstall: CreateBackup; Flags: uninsneveruninstall skipifsourcedoesntexist overwritereadonly ignoreversion
Автор: gvshil
Дата сообщения: 12.04.2007 18:09
Как поменять иконку программе в Панель управления - >Установка и удаление программ?
Спасибо.
Автор: Sampron
Дата сообщения: 12.04.2007 18:31
gvshil
В папку с программой положи icon.ico

[Setup]
UninstallDisplayIcon={app}\icon.ico
Автор: gvshil
Дата сообщения: 12.04.2007 20:35
Sampron
Не, не помогло...
Иконка деинстолятора отображлась и отображается после внесения
Цитата:
В папку с программой положи icon.ico
нормально. Я спрашивал про иконку в Установка и удаление программ

Автор: Sampron
Дата сообщения: 12.04.2007 21:21
gvshil
Тебе нужно чтобы в Установка и удаление программ отображалась твоя иконка твоей программы?
Если да то в папку с программой которую будешь компилировать положи icon.ico или включи иконку в скрипт:

[Setup]
UninstallDisplayIcon={app}\icon.ico

[Files]
Source: C:\icon.ico; DestDir: {app}

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: ICONS


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