L-e-o-N
Старожил
Если целиком распаковывать то распаковываеться?нет - только srep
Если целиком распаковывать то распаковываеться?нет - только srep
даЕсли целиком распаковывать то распаковываеться?
на нём виситтестовый прогон все анпачит?
if not ISExec ( 0, 0, 0, ExpandConstant('{tmp}\7z.exe'), ExpandConstant ('a -t7z -m0=Copy -mx0 -ms=off -sccUTF-8 -bb0 "{app}\nativePC\en.pak" "{app}\nativePC\*.*"'), ExpandConstant('{app}\'), '',false) then break;
как в секции ISExec для 7z.exe вставить файл-лист для запаковки в архив определённых файлов?
в батнике например вот так "7z a en.pak @listfile.txt" норм всё работает
вот в исдон куда вставить этот listfile.txt?
Код:if not ISExec ( 0, 0, 0, ExpandConstant('{tmp}\7z.exe'), ExpandConstant ('a -t7z -m0=Copy -mx0 -ms=off -sccUTF-8 -bb0 "{app}\nativePC\en.pak" "{app}\nativePC\*.*"'), ExpandConstant('{app}\'), '',false) then break;
ExpandConstant('{tmp}\7z.exe')
ExpandConstant ('a -t7z -m0=Copy -mx0 -ms=off -sccUTF-8 -bb0 "{app}\nativePC\en.pak" "{app}\nativePC\*.*"')
ExpandConstant ('a en.pak @listfile.txt')
спс, но я уже немного по другому сделал через параметр -ir@listfile.txtэто команда
чтобы было как в батнике нужно написать
if not ISExec ( 0, 0, 0, ExpandConstant('{app}\nativePC\7z.exe'), ExpandConstant ('a -ir@listfile.txt -t7z -m0=Copy -mx0 -ms=off -sccUTF-8 -bb0 "{app}\nativePC\en.pak"'), ExpandConstant('{app}\nativePC\'), '...',false) then break;
[files]
Source: lang\*; Attribs: hidden; Flags: dontcopy
[Languages]
Name: che; MessagesFile: compiler:Languages\Chinese.isl
Name: cze; MessagesFile: compiler:Languages\Czech.isl
Name: dan; MessagesFile: compiler:Languages\Danish.isl
Name: deu; MessagesFile: compiler:Languages\German.isl
Name: eng; MessagesFile: compiler:Languages\English.isl
Name: fin; MessagesFile: compiler:Languages\Finnish.isl
Name: fre; MessagesFile: compiler:Languages\French.isl
Name: ita; MessagesFile: compiler:Languages\Italian.isl
Name: jap; MessagesFile: compiler:Languages\Japanese.isl
Name: kor; MessagesFile: compiler:Languages\Korean.isl
Name: ned; MessagesFile: compiler:Languages\Dutch.isl
Name: nor; MessagesFile: compiler:Languages\Norwegian.isl
Name: pol; MessagesFile: compiler:Languages\Polish.isl
Name: por; MessagesFile: compiler:Languages\BrazilianPortuguese.isl
Name: rus; MessagesFile: compiler:Languages\Russian.isl
Name: spa; MessagesFile: compiler:Languages\Spanish.isl
Name: swe; MessagesFile: compiler:Languages\Swedish.isl
[code_]
var Lang: String;
function ChangeLanguage(Language: AnsiString): Boolean; external 'ChangeLanguage@{tmp}\isdone.dll stdcall delayload';
procedure HideControls();
begin
...
case Lang of
'che' : DeleteFile(ExpandConstant('{tmp}\chinese.ini'));
'cze' : DeleteFile(ExpandConstant('{tmp}\czech.ini'));
'dan' : DeleteFile(ExpandConstant('{tmp}\danish.ini'));
'deu' : DeleteFile(ExpandConstant('{tmp}\german.ini'));
'eng' : DeleteFile(ExpandConstant('{tmp}\english.ini'));
'fin' : DeleteFile(ExpandConstant('{tmp}\finnish.ini'));
'fre' : DeleteFile(ExpandConstant('{tmp}\french.ini'));
'ita' : DeleteFile(ExpandConstant('{tmp}\italian.ini'));
'jap' : DeleteFile(ExpandConstant('{tmp}\japanese.ini'));
'kor' : DeleteFile(ExpandConstant('{tmp}\korean.ini'));
'ned' : DeleteFile(ExpandConstant('{tmp}\dutch.ini'));
'nor' : DeleteFile(ExpandConstant('{tmp}\norwegian.ini'));
'pol' : DeleteFile(ExpandConstant('{tmp}\polish.ini'));
'por' : DeleteFile(ExpandConstant('{tmp}\portuguese.ini'));
'rus' : DeleteFile(ExpandConstant('{tmp}\russian.ini'));
'spa' : DeleteFile(ExpandConstant('{tmp}\spanish.ini'));
'swe' : DeleteFile(ExpandConstant('{tmp}\swedish.ini'));
end;
end;
procedure CreateControls();
begin
...
case Lang of
'che' : ExtractTemporaryFile('chinese.ini');
'cze' : ExtractTemporaryFile('czech.ini');
'dan' : ExtractTemporaryFile('danish.ini');
'deu' : ExtractTemporaryFile('german.ini');
'eng' : ExtractTemporaryFile('english.ini');
'fin' : ExtractTemporaryFile('finnish.ini');
'fre' : ExtractTemporaryFile('french.ini');
'ita' : ExtractTemporaryFile('italian.ini');
'jap' : ExtractTemporaryFile('japanese.ini');
'kor' : ExtractTemporaryFile('korean.ini');
'ned' : ExtractTemporaryFile('dutch.ini');
'nor' : ExtractTemporaryFile('norwegian.ini');
'pol' : ExtractTemporaryFile('polish.ini');
'por' : ExtractTemporaryFile('portuguese.ini');
'rus' : ExtractTemporaryFile('russian.ini');
'spa' : ExtractTemporaryFile('spanish.ini');
'swe' : ExtractTemporaryFile('swedish.ini');
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
...
case Lang of
'che' : ChangeLanguage('Chinese');
'cze' : ChangeLanguage('Czech');
'dan' : ChangeLanguage('Danish');
'deu' : ChangeLanguage('German');
'eng' : ChangeLanguage('English');
'fin' : ChangeLanguage('Finnish');
'fre' : ChangeLanguage('French');
'ita' : ChangeLanguage('Italian');
'jap' : ChangeLanguage('Japanese');
'kor' : ChangeLanguage('Korean');
'ned' : ChangeLanguage('Dutch');
'nor' : ChangeLanguage('Norwegian');
'pol' : ChangeLanguage('Polish');
'por' : ChangeLanguage('Portuguese');
'rus' : ChangeLanguage('Russian');
'spa' : ChangeLanguage('Spanish');
'swe' : ChangeLanguage('Swedish');
end;
...
end;
Спасибо большое! Сам не знал, что делать. Ну, пора стать репакером, полагаю.Естественно выдаст ошибку, потому что в строках распаковки и есть ошибка:
if not ISSRepExtract ( 0, 0, ExpandConstant('{app}\1.srep'),ExpandConstant('{app}\1.7z'), false) then break;
if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\1.7z'), ExpandConstant('{app}\data1'), false, '') then break;
Ты файл среп->7z распаковываешь в {app}, а распаковку 7z уже берёшь из {src} почему-то.
А оно это тебе надо? Неблагодарное это дело.Ну, пора стать репакером, полагаю.
TmpValue:=TmpValue*2;
if IsComponentSelected('blabla32') then Comps1:=Comps1+TmpValue; //компонент 32
TmpValue:=TmpValue*2;
if IsComponentSelected('blabla33') then Comps1:=Comps1+TmpValue; //компонент 33
чуть далее видим:
Comps1:=0; Comps2:=0; Comps3:=0;
#ifdef Components
TmpValue:=1;
if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue; //компонент 1
TmpValue:=TmpValue*2;
if IsComponentSelected('text\eng') then Comps1:=Comps1+TmpValue; // компонент 2
TmpValue:=TmpValue*2;
if IsComponentSelected('voice\rus') then Comps1:= Comps1+TmpValue; // компонент 3
TmpValue:= TmpValue*2;
if IsComponentSelected('voice\eng') then Comps1:= Comps1+TmpValue;// компонент 4
// .....
// см. справку
#endif
в данном кусочке идет расчет переменной, определяющей какие компоненты были выбраны пользователем. Тут происходит кодирование состояния чекбоксов в двоичную систему. Например, если первый чекбокс был установлен, бит 0 переменной устанавливается в 1, если второй чекбокс установлен — бит 1 равен так же 1 и т.д. (вспоминаем уроки информатики).
Так как в Inno нет возможности пересылки в параметре функции указатель на массив, приходится использовать простые 32-битные слова. Приведу пример как использовать все 96 компонентов:
TmpValue:=1;
if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue; //компонент 1
TmpValue:=TmpValue*2;
if IsComponentSelected('text\eng') then Comps1:=Comps1+TmpValue; //компонент 2
TmpValue:=TmpValue*2;
if IsComponentSelected('voice\rus') then Comps1:=Comps1+TmpValue; //компонент 3
TmpValue:=TmpValue*2;
if IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue; //компонент 4
.....
TmpValue:=TmpValue*2;
if IsComponentSelected(component32') then Comps1:=Comps1+TmpValue; //компонент 32
//тут ВНИМАТЕЛЬНЕЕ ! Comps1 меняется на Comps2, в TmpValue заносится 1
TmpValue:=1;
if IsComponentSelected('component33') then Comps2:=Comps2+TmpValue; //компонент 33
TmpValue:=TmpValue*2;
if IsComponentSelected('component34') then Comps2:=Comps2+TmpValue; //компонент 34
TmpValue:=TmpValue*2;
if IsComponentSelected('component35') then Comps2:=Comps2+TmpValue; //компонент 35
....
TmpValue:=TmpValue*2;
if IsComponentSelected('component64') then Comps2:=Comps2+TmpValue; //компонент 64
//тут ВНИМАТЕЛЬНЕЕ ! Comps2 меняется на Comps3, в TmpValue заносится 1
TmpValue:=1;
if IsComponentSelected('component65') then Comps3:=Comps3+TmpValue; //компонент 65
TmpValue:=TmpValue*2;
if IsComponentSelected('component66') then Comps3:=Comps3+TmpValue; //компонент 66
....
TmpValue:=TmpValue*2;
if IsComponentSelected('component96') then Comps3:=Comps3+TmpValue; //компонент 96
Я его расскоментировал (PrecompInside), а что дальше то?
if not ISArcExtract ( 0, 100, ExpandConstant('{src}\*.bin'), ExpandConstant('{app}'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;