PDA

Показать полную графическую версию : [архив] Inno Setup .:[все вопросы]:.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [33] 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

tem000
19-04-2009, 17:25
P.S.
Скажу по своему опыту, некоторые вещи от перевода, теряют свою суть и понимание процесса... »

Serega_, есть такая фигня, я делал перевод в основном для себя не могу сидеть на прогах с англиским интерфейсом как то напрягает. В расширенной версии оказалось много полезных функций и работать в ней как то камфортней что ли. А вообще старался более правильно и доходчиво передать смысл. Единственное не перевел до конца мастера, там при правке сообщений в теле программы прога начинала выдавать ошибки что ни есть гуд. Поэтому оставил как есть, лучше рабочая но не до конца русифицированная, чем полностью русская но не рабочая. :teeth:

Serega
19-04-2009, 17:54
есть такая фигня, я делал перевод в основном для себя не могу сидеть на прогах с англиским интерфейсом как то напрягает. В расширенной версии оказалось много полезных функций и работать в ней как то комфортней что ли. А вообще старался более правильно и доходчиво передать смысл. Единственное не перевел до конца мастера, там при правке сообщений в теле программы прога начинала выдавать ошибки что ни есть гуд. Поэтому оставил как есть, лучше рабочая но не до конца русифицированная, чем полностью русская но не рабочая. »
Большое вам спаибо за перевод, но между нами, я постоянно перевожу часть Дополнительных апплет панели управления (аддон от prokazzza), в самом начале, это был мой, своего рода протест против английского языка... Со временем я начал понимать суть фраз просто пробежавшись по тексту, а потом я понял, что перевод - это один из способов изучения иностранного языка... ;)

volk1234
19-04-2009, 19:33
А кроме всего прочего, перевод программы это еще и способ изучить программу лучше, чем другие пользователи :)
Я перевожу Locate32 и раньше переводил Notepad2... так что знаю что говорю :)
Перевод поднимаю в шапку.

tem000
Пожалуйста в дальнейшем правьте первоначальный пост #639 , подробности в РМ.
И еще давайте пишите сюда, что вам непонятно - давайте вместе допереведем...

ForestDron
20-04-2009, 11:43
Пацаны пожалуста помогите НУБУ, как удалить после установки инсталятора эти файлы: Sounds.exe,Video.exe,Music.exe,Resources.exe.
За ранее спасибо :)




[Setup]
AppName={#MyAppName}
AppVerName={#MyAppVerName}
AppPublisher={#MyAppPublisher}
DefaultDirName=C:\Program Files\T34vsTiger
DefaultGroupName={#MyAppName}
OutputDir=C:\Documents and Settings\Äðîí\Ðàáî÷èé ñòîë
OutputBaseFilename=setup2
Compression=lzma/ultra64
SolidCompression=yes
WizardImageFile=D:\Games\T34vsTiger.bmp
ShowComponentSizes=yes

[Languages]
Name: "russian"; MessagesFile: "compiler:Default.isl"

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

[Files]
Source: "D:\Games\T34vsTiger\T34.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\Games\T34vsTiger\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "D:\Games\T34vsTiger\Sounds.exe"; DestDir: "{app}"; Flags: deleteafterinstall nocompression
Source: "D:\Games\T34vsTiger\Video.exe"; DestDir: "{app}"; Flags: deleteafterinstall nocompression
Source: "D:\Games\T34vsTiger\Music.exe"; DestDir: "{app}"; Flags: deleteafterinstall nocompression
Source: "D:\Games\T34vsTiger\Resources.exe"; DestDir: "{app}"; Flags: deleteafterinstall nocompression


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

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#MyAppName}}"; Flags: nowait postinstall skipifsilent
Filename: "{app}\Sounds.exe"; Parameters: "-y";StatusMsg: "Èä¸ò ðàñïàêîâêà ôàéëîâ"; Flags: waituntilterminated;
Filename: "{app}\Video.exe"; Parameters: "-y";StatusMsg: "Èä¸ò ðàñïàêîâêà ôàéëîâ"; Flags: waituntilterminated;
Filename: "{app}\Music.exe"; Parameters: "-y";StatusMsg: "Èä¸ò ðàñïàêîâêà ôàéëîâ"; Flags: waituntilterminated;
Filename: "{app}\Resources.exe"; Parameters: "-y";StatusMsg: "Èä¸ò ðàñïàêîâêà ôàéëîâ"; Flags: waituntilterminated;

Serega
20-04-2009, 12:28
ForestDron, надо так:

.......................................
[Files]
Source: D:\Games\T34vsTiger\T34.exe; DestDir: {app}; Flags: ignoreversion
Source: D:\Games\T34vsTiger\*; DestDir: {app}; Excludes: Sounds.exe, Video.exe, Music.exe, Resources.exe; Flags: ignoreversion recursesubdirs createallsubdirs
Source: D:\Games\T34vsTiger\Sounds.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall nocompression
Source: D:\Games\T34vsTiger\Video.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall nocompression
Source: D:\Games\T34vsTiger\Music.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall nocompression
Source: D:\Games\T34vsTiger\Resources.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall nocompression
.......................................

ForestDron
20-04-2009, 14:39
Serega Братка помог отдуши,просто человеческое спасибо :bow:

Sserss
21-04-2009, 23:00
Нужна помощь плиз.При большом (1.7 Гб) компилируемом фале после компиляции не отображается иконка Setupa заданная в SetupIconFile=ххххх.ico. При компиляции файла например 170 Мб все нормально заданная иконка отображается. :dont-know

Serega
21-04-2009, 23:19
При большом (1.7 Гб) компилируемом фале после компиляции не отображается иконка Setupa заданная в SetupIconFile=ххххх.ico. »Это связано с большим размером инсталлятора, выход из ситуации, это использовать внешние файлы. Можно в виде архивов, т.е. сохраняете архив рядом с инсталлятором. При установке ваш инсталлятор копирует архив в папку назначения, распаковывает и затем удаляет этот архив.

Sserss
21-04-2009, 23:42
Спасибо за помощь! Но я не представляю как это воплотить, не знаю какие команды должны быть в скрипте для распаковки и удаления архива.А архив какой 7zip,RAR или Zip.
Пример бы какой нибудь если Вам нетрудно.

Serega
21-04-2009, 23:55
Устанавливаем 7z SFX архив в папку с программой, запускаем его и удаляем после выполнения.[Components]
Name: "eng"; Description: "Английская версия"; Flags: exclusive
Name: "rus"; Description: "Русская версия"; Flags: exclusive

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

[Files]
Source: "D:\GAME\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
Components: rus; Source: "{src}\Rus\GAME_RUS.exe"; DestDir: "{app}"; Flags: ignoreversion external deleteafterinstall

[Run]
Filename: "{app}\GAME_RUS.exe"; WorkingDir: "{app}"; Parameters: "-y"; StatusMsg: "Процесс русификации..."; Flags: waituntilterminated skipifdoesntexist

Запуск 7z SFX архива из секции Code[Setup]
AppName=Need for Speed - Carbon
AppVerName=Need for Speed - Carbon v1.3
DefaultDirName={sd}\Games\NFSCarbon

[Components]
Name: eng; Description: Английская версия; Flags: exclusive
Name: rus; Description: Русская версия; Flags: exclusive

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

[Files]
Source: D:\NFSCarbon\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs

[Run]
Filename: {src}\Rus\NFSC_RUS.exe; Components: rus; WorkingDir: {src}\Rus; Parameters: "-y -o""{app}"""; StatusMsg: Установка русификации...; Flags: waituntilterminated

[_Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
res:Integer;
app, arc, dest:string;
begin
If CurStep=ssPostInstall then
begin
app:=ExpandConstant('{src}')+'\7za.exe'; // консольная утилита 7z
arc:=ExpandConstant('{src}')+'\ARC.7z'; // сам архив
dest:=ExpandConstant('{app}'); // путь распаковки
Exec(app, 'x "'+ arc + '" -y -o"'+ dest + '"', '', SW_SHOWNORMAL, ewWaitUntilTerminated, res);//ключи командной строки 7z
end;
end;

Sserss
22-04-2009, 00:00
Спасибо огромное за быстрый ответ. Попробую разобраться.

BlackSelf
01-05-2009, 06:09
Здравствуйте. Появилось ещё пару вопросов.
1. Как поставить прозрачность на секцию messages (чтобы текст отображался, а фон этого текста стал прозрачным)? И возможно ли это?
2. Вставил проигрывание музыки в инсталл. Нужно создать кнопку пауза/проигрывание. Подскажите, как это сделать.
3. В общем, возможно ли сделать следующее: при распаковке архивов фриарка во временной папке создавать лог. А из него как-нибудь брать проценты распаковки и выводить их на прогресс-бар?

Serega
01-05-2009, 08:12
BlackSelf,
1. В сообщение проблема установить свой рисунок, не говоря уже о прозрачности, но можно попробовать создать новую форму, а уже её попытаться сделать полупрозрачной, но даже и при таком раскладе не получится сделать видимым один текст... т.е. чем прозрачней форма, тем тусклее текст.

[Setup]
AppName=My Program
AppVerName=My Program 1.5
AppPublisher=My Company, Inc.
AppPublisherURL=http://www.mycompany.com
AppSupportURL=http://www.mycompany.com
AppUpdatesURL=http://www.mycompany.com
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Files]
Source: compiler:Libraries\BASSMOD.dll; Flags: dontcopy
; указываем музыку, которую надо проиграть
Source: mattis-lowsi_jeti_maah.mod; Flags: dontcopy

[_Code]
const
BASS_MUSIC_RAMP = 1; // normal ramping (only for Fast Tracker .xm)
BASS_MUSIC_RAMPS = 2; // sensitive ramping (only for Fast Tracker .xm)
BASS_MUSIC_LOOP = 4; // loop music
BASS_MUSIC_FT2MOD = 16; // play .MOD as FastTracker 2 does
BASS_MUSIC_PT1MOD = 32; // play .MOD as ProTracker 1 does
BASS_MUSIC_SURROUND = 512; // surround sound
BASS_MUSIC_SURROUND2 = 1024; // surround sound (mode 2)

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

procedure BASSMOD_MusicFree();
external 'BASSMOD_MusicFree@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';

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

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

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

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

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

procedure PlayButtonOnClick(Sender: TObject);
var
Name1: string;
begin
if not BASSMOD_MusicPlay then begin
Name1:=ExpandConstant('{tmp}\mattis-lowsi_jeti_maah.mod');
if BASSMOD_MusicLoad(FALSE, PChar(Name1), 0, 0, 4 or 512 or 32 or 1) then
BASSMOD_MusicPlay;
end;
end;

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

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

procedure InitializeWizard();
var
Name1: string;
PlayButton, PauseButton, StopButton, RewButton: TButton;
Text: TNewStaticText;
Panel1: TPanel;
begin
// распаковываем BASSMOD.dll во временную папку
ExtractTemporaryFile(ExpandConstant('BASSMOD.dll'));
// распаковываем mattis-lowsi_jeti_maah.mod во временную папку
ExtractTemporaryFile(ExpandConstant('mattis-lowsi_jeti_maah.mod'));

if not BASSMOD_Init(-1,44100,0) then begin
MsgBox('BASSMOD не смогла инициализироваться, проигрывание музыки невозможно.', mbInformation, MB_OK)
BASSMOD_Free;
end;

Name1:= ExpandConstant('{tmp}\mattis-lowsi_jeti_maah.mod');
BASSMOD_MusicFree;
if BASSMOD_MusicLoad(FALSE, PChar(Name1), 0, 0, BASS_MUSIC_LOOP or BASS_MUSIC_SURROUND) then
BASSMOD_MusicPlay;

// создаём панель, на которой будут отбражаться кнопки
Panel1 := TPanel.Create(WizardForm);
with Panel1 do begin
Parent := WizardForm;
Left := ScaleX(1);
Top := ScaleY(315);
Width := ScaleX(165);
Height := ScaleY(46);
TabOrder := 0;
Color := clWhite;
BevelInner := bvLowered;
BevelOuter:= bvRaised;
BorderStyle := bsSingle;
end;
// создаём три кнопки PlayButton, PauseButton, StopButton и текст Text
PlayButton := TButton.Create(WizardForm);
with PlayButton do begin
Left := 5;
Top := 335;
Width := 50;
Height := 20;
Caption := 'игра';
OnClick := @PlayButtonOnClick;
Parent := WizardForm;
Cursor := crHand;
Hint := 'Воспроизведение музыки';
ShowHint := True;
end;

PauseButton := TButton.Create(WizardForm);
with PauseButton do begin
Left := 58;
Top := 335;
Width := 50;
Height := 20;
Caption := 'пауза';
OnClick := @PauseButtonOnClick;
Parent := WizardForm;
Cursor := crHand;
Hint := 'Приостановить музыку';
ShowHint := True;
end;

StopButton := TButton.Create(WizardForm);
with StopButton do begin
Left := 111;
Top := 335;
Width := 50;
Height := 20;
Caption := 'cтоп';
OnClick := @StopButtonOnClick;
Parent := WizardForm;
Cursor := crHand;
Hint := 'Остановить музыку';
ShowHint := True;
end;

Text := TNewStaticText.Create(WizardForm);
with Text do begin
Caption := 'музыка инсталлятора';
Parent := WizardForm;
Font.Style := Text.Font.Style + [fsUnderline];
Font.Color := clNavy;
Top := 319;
Left :=26;
Color := clWhite;
end;
end;

3. Не знаю, я с фриарком не знаком.
Мне интересно, что так все носятся с этим фриарком? Мне кажется 7z пакует намного лучше...
Если интересно, в этом сообщении я выкладывал ссылку на библиотеку is7z.dll, для показа хода распаковки 7z архивов во втором прогрессбаре.

BlackSelf
01-05-2009, 20:48
Serega_, спасибо.
А насчет фриарка: он пакует лучше, поэтому я предпочитаю работать именно с ним.

Drongo
01-05-2009, 21:08
Привет, я с таким вопросом снова, нужно сделать, чтобы менялись картинки скриншотова менялись, скажем, после каждых пяти процентов установленной игры? »Или по какому-то алгоритму, чтобы 26 картинок, не повторялись, а общие 100 % установки делились на 25-26 и менялись бы с интервалом, в 4 %
там единственное идёт показ по времени, где-то у меня был пример по процентам, поищу... »Это не критично и не срочно. Если есть такой код - хорошо, нет - ничего страшного.

BlackSelf
01-05-2009, 22:12
Drongo, если я правильно понял, то тебе нужно слайдшоу по процентам установки.
Вот пример с тремя картинками. Думаю, будет понятно, как поставить 25 картинок.
[Setup]
AppName=My Program
AppVerName=My Program
CreateAppDir=No
WindowVisible=Yes

[Files]
Source: innocallback.dll; DestDir: {tmp}; Flags: dontcopy
Source: pic1.bmp; DestDir: {tmp}; Flags: dontcopy
Source: pic2.bmp; DestDir: {tmp}; Flags: dontcopy
Source: pic3.bmp; DestDir: {tmp}; Flags: dontcopy

[Code]
type
TProc=procedure(HandleW, msg, idEvent, TimeSys: LongWord);
var
BackgroundBitmapImage: TBitmapImage;
TimerID: LongWord;

function WrapTimerProc(callback:TProc; paramcount:integer):longword;
external 'wrapcallback@files:innocallback.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord;
external 'SetTimer@user32.dll stdcall';
function KillTimer(hWnd: LongWord; nIDEvent: LongWord): LongWord;
external 'KillTimer@user32.dll stdcall';
function GetSystemMetrics(nIndex:Integer):Integer;
external 'GetSystemMetrics@user32.dll stdcall';

procedure InitializeWizard();
begin
ExtractTemporaryFile('pic1.bmp')
ExtractTemporaryFile('pic2.bmp')
ExtractTemporaryFile('pic3.bmp')
end;

function PercentProgress(): Integer;
begin
with WizardForm.ProgressGauge do begin
Result:=(Position-Min)/((Max - Min)/100)
end
end;

procedure OnTimer(HandleW, msg, idEvent, TimeSys: LongWord);
var
percent: integer;
begin
percent:=PercentProgress
with BackgroundBitmapImage do begin
if ((percent>0) and (percent<33) and (Tag<>1)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\pic1.bmp')
Tag:=1
end else
if ((percent>34) and (percent<66) and (Tag<>2)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\pic2.bmp')
Tag:=2
end else
if ((percent>67) and (percent<100) and (Tag<>3)) then begin
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\pic3.bmp')
Tag:=3
end
end
end;

procedure CurPageChanged(CurPageID: Integer);
var
pfunc: LongWord;
Width, Height: Integer;
begin
If CurPageID=wpInstalling
then
begin
pfunc:=WrapTimerProc(@OnTimer, 4)
TimerID:=SetTimer(0, 0, 500, pfunc)
BackgroundBitmapImage:=TBitmapImage.Create(MainForm)
with BackgroundBitmapImage do begin
BackColor:=clBlack
Center:=True
Align:=alClient
Bitmap.LoadFromFile(ExpandConstant('{tmp}') + '\pic1.bmp')
Parent:=MainForm
Tag:=1
end
end
if CurPageID=wpFinished
then
begin
BackgroundBitmapImage.Hide
end
end;

procedure DeinitializeSetup();
begin
KillTimer(0, TimerID)
end;

tem000
01-05-2009, 22:35
Serega_, подскажи пожалуйста если знаешь, как в свойствах ярлыка прописать вот эти пункты http://pic.ipicture.ru/uploads/090501/ll4RdWkHTx.jpg (http://ipicture.ru/)
смысл такой программа имеет один файл .exe, но в ней имеется как бы еще одна программа ссылающаяся на тот же файл, обе программы можно запустить как 2 отдельных процесса через 2 разных ярлыка, но для этого в свойствах ярлыка надо прописывать то что на скрине. Как это сделать???

boss911
01-05-2009, 23:08
tem000

[Icons]
Name: {userdesktop}\IrfanView 3.95; Filename: {app}\i_view32.exe; Parameters: /thumba; WorkingDir: {app}; Comment: IrfanView - Thumbnails
{userdesktop} - путь к папке рабочего стола текущего пользователя.
{userprograms} - путь к папке Программы меню Пуск текущего пользователя.

tem000
02-05-2009, 00:22
boss911, спасибо помогло все работает, но еще вопрос теперь на столе появляются две абсолютно одинаковые иконки, хотя у этих 2 программ они разные, и в .exe файле есть своя иконка для второго приложения. Короче при инсталяции на рабочем столе в свойствах ярлыка приходится менять иконку на другую. Откуда можно выковырять насторйки какой значек отображать на рабочем столе?

Serega
02-05-2009, 01:14
tem000,
[Icons]
Name: {userdesktop}\IrfanView 3.95; Filename: {app}\i_view32.exe; Parameters: /thumba; WorkingDir: {app}; Comment: IrfanView - Thumbnails; IconFilename: {app}\i_view32.exe; IconIndex: 0

IconFilename - Имя файла иконки (расположенной в системе пользователя). Это может быть изображение с расширением .exe или .dll, содержащее иконки, или файл .ico;
IconIndex - индекс иконки, если не указывать, то по умолчанию 0.




© OSzone.net 2001-2012