Проблема Висит распаковка на 0.0% (решено)

tihiy_don

Старожил
Чистая Windows 10. Защитник виндовс отключён. При начале распаковке просто установщик висит на 0.0%. В темпе есть все необходимые для распаковки файлы. Кто может подсказать, в чём может быть проблема? Менял параметры с tmp на app, не помогло.

Проблема наблюдается не на всех пк, на моей виндовс 11 всё норм идёт. А на виндовс 10 нет.

Архив запакован цепочкой xtool + rep + lolz. В диспетчере висит процесс lolz и всё. Может кто сталкивался из участников форума?

code_language.pascal:
#ifdef SrepFutureLZ
    SetIniString('Srep', 'TempPath', ExpandConstant('{tmp}'), ExpandConstant('{tmp}\CLS.ini'));
        ExtractTemporaryFile('CLS-srep.dll');
        ExtractTemporaryFile('cls-srep_x64.exe');
    ExtractTemporaryFile('cls-srep_x86.exe');
#endif

#ifdef xtool
    ExtractTemporaryFile('unarc.exe');
    ExtractTemporaryFile('xtool.exe');
    ExtractTemporaryFile('zlibwapi.dll');
    ExtractTemporaryFile('raw2hif_dll.dll');
    ExtractTemporaryFile('libzstd.dll');
    ExtractTemporaryFile('liblz4.dll');
    ExtractTemporaryFile('hif2raw_dll.dll');
    ExtractTemporaryFile('lzo2.dll');
#endif

#ifdef lolz
    SetIniString('lolz', 'TempPath', ExpandConstant('{tmp}'), ExpandConstant('{tmp}\CLS.ini'));
    ExtractTemporaryFile('cls-lolz.dll');
    ExtractTemporaryFile('cls-lolz_x64.exe');
    ExtractTemporaryFile('cls-lolz_x86.exe');
#endif

#ifdef precomp
  PCFVer:={#precomp};
#else
  PCFVer:=0;
#endif
    ISDoneError:=true;
    if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin
      repeat

        if not FileSearchInit(true) then break;

//архивы
if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\Data-1.bin'), ExpandConstant('{app}\'), '', false, '228', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
if not ISArcExtract    ( 0, 0, ExpandConstant('{src}\Data-2.bin'), ExpandConstant('{app}\'), '', false, '228', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) 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;
 
Последнее редактирование:

Crachlow

Старожил
Там может быть несколько причин. Например упакована одним lolz, а распаковка CLS-lolz.dll от другого. Можешь еще по экспериментировать в CLS.ini, где прописана распаковка [lolz], строку MaxThreadsUsage=? попробуй использовать меньшее число потоков. Начни с 2.
 

tihiy_don

Старожил
Там может быть несколько причин. Например упакована одним lolz, а распаковка CLS-lolz.dll от другого. Можешь еще по экспериментировать в CLS.ini, где прописана распаковка [lolz], строку MaxThreadsUsage=? попробуй использовать меньшее число потоков. Начни с 2.
тогда почему работает где-то, а где-то нет? :) Тестируемая система обладает процессором с 28 ядрами.
 
Последнее редактирование:

Crachlow

Старожил
Я сталкивался с такой проблемой. У меня 2 компа. На одном райзер 2700х, на другом 3900хт. На 3900 распаковка норма, на другом или висит или ошибка. Поставил MaxThreadsUsage=2 потока - на обоих распаковывается.
 

tihiy_don

Старожил
Я сталкивался с такой проблемой. У меня 2 компа. На одном райзер 2700х, на другом 3900хт. На 3900 распаковка норма, на другом или висит или ошибка. Поставил MaxThreadsUsage=2 потока - на обоих распаковывается.
Большое спасибо за совет, обязательно попробую и отпишусь.
 

tihiy_don

Старожил
Да, действительно, распаковка пошла. Ещё раз большое спасибо, добрый человек. А если я например поставлю в 4 потока, то не будет ошибок на компах, где 2 ядра всего?
 

Crachlow

Старожил
Да, действительно, распаковка пошла. Ещё раз большое спасибо, добрый человек. А если я например поставлю в 4 потока, то не будет ошибок на компах, где 2 ядра всего?
Я покопался в своих архивах, и нашел все таки с чем, по моему, была связана эта ошибка. Lolz версии 21а7. В крайней версии эта ошибка уже не встречалась. На счет 2-ух ядерных не знаю, но можно указать параметр в процентах, к примеру 15-20% вместо 2 потоков.
 

tihiy_don

Старожил
Я покопался в своих архивах, и нашел все таки с чем, по моему, была связана эта ошибка. Lolz версии 21а7. В крайней версии эта ошибка уже не встречалась. На счет 2-ух ядерных не знаю, но можно указать параметр в процентах, к примеру 15-20% вместо 2 потоков.
у меня было указано 75%. Но видимо лолз не может более 16 потоков и стопориться. Ведь на системе 56 потоков доступно...
 

Crachlow

Старожил
Возможно. Я не стал, в то время, углубляться в эту проблему. Потому что в распаковке участвует не только lolz, но и в большинстве случаев srep, xtool и др. И сильно большое кол-во потоков lolz не очень влияет на скорость распаковки.
 
Сверху