ISDone

DLL ISDone 0.6 final

Нет прав для скачивания

vint56

Ветеран
Проверенный
robinanis
[Components]
Name: Comp; Description: Компоненты; Types: full; Flags: fixed убери это

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application

[Types]
Name: "Select"; Description:"Выбор компонентов"; Flags: iscustom
Name: "Full"; Description: "Выделить все";
Name: "Сancel"; Description: "Отменить все";

[Components]
Name: Comp; Description: Компоненты; Types: Сancel;
Name: Comp\1; Description: Компонент1; Types: Full;
Name: Comp\2; Description: Компонент2; Types: Full;
Name: Comp\2; Description: Компонент2; Types: Full;
Name: Comp\3; Description: Компонент3; Types: Full;
Name: Comp\4; Description: Компонент4; Types: Full;
 

robinanis

Новичок
У меня появилась проблема, почему то устанавливаются не все компоненты, хотя галочки все стоят
но это проявилось не сразу...раза 4-5нормально все устанавливал, а после уже начал устанавливать не все сразу

список файлов которые устанавливаются из архива
1644247499481.png
красным выделил то что не установилось

почему это может быть?
 

Krinkels

Он где то тут
Администратор
У тебя первый параметр ISArcExtract идёт 31 а потом 33, это так и задумано?
 

Krinkels

Он где то тут
Администратор
Это конечно не моё дело, но минимум 54 архива........
А общий объём файлов сколько весит? Может целесообразней всё это в сам установщик запихнуть?
 

robinanis

Новичок
мне надо поменять будет там номер компонента?

или здесь изменить что-то

Код:
// Подготавливаем переменную, содержащую всю информацию о выделенных компонентах для ISDone.dll
// максимум 96 компонентов.
    Comps1:=0; Comps2:=0; Comps3:=0;
#ifdef Components
    TmpValue:=1;
    if IsComponentSelected('hud1') then Comps1:=Comps1+TmpValue; // это  1 компонент
    TmpValue:=TmpValue*2;
  
    ...

    if IsComponentSelected('mdload1\137bank1') then Comps1:=Comps1+TmpValue;    // а это 31 компонент
    TmpValue:=TmpValue*2; 
    if IsComponentSelected('asi1\fall1') then Comps1:=Comps1+TmpValue;    //это уже 33 компонент
    TmpValue:=TmpValue*2;

    ...
 

robinanis

Новичок
Это конечно не моё дело, но минимум 54 архива........
А общий объём файлов сколько весит? Может целесообразней всё это в сам установщик запихнуть?
у меня один архив со всеми компонентами


а так можно запихнуть файлы в установщик? а как это делается
 

Krinkels

Он где то тут
Администратор
С 33 разряда попробуй заполнять Comps1, то бишь
if IsComponentSelected('asi1\fall1') then Comps2:=Comps2+TmpValue; //это уже 33 компонент
TmpValue:=TmpValue*2;
 

Shegorat

Lord of Madness
Администратор
@robinanis,
Неправильно заполнены параметры Comps1..Comps3.
Если в общих чертах то каждая из этих переменных может обрабатывать 32 компонента. Это 32-битные числа, и каждый разряд представляет собой булевое значение для распаковки 1 компонента с соответствующим индексом.
Comps1 - 1..32
Comps2 - 33..64
Comps3 - 65..96

Поэтому их нужно соответственно заполнять, при этом, переключаясь с Comps1 на Comps2 нужно сбрасывать TmpValue:= 1, а остальной принцип такой же. Также можно посмотреть в справку к ISDone
 

robinanis

Новичок
@robinanis,
Неправильно заполнены параметры Comps1..Comps3.
Если в общих чертах то каждая из этих переменных может обрабатывать 32 компонента. Это 32-битные числа, и каждый разряд представляет собой булевое значение для распаковки 1 компонента с соответствующим индексом.
Comps1 - 1..32
Comps2 - 33..64
Comps3 - 65..96

Поэтому их нужно соответственно заполнять, при этом, переключаясь с Comps1 на Comps2 нужно сбрасывать TmpValue:= 1, а остальной принцип такой же. Также можно посмотреть в справку к ISDone

Я правильно понял?,


Comps1:=0; Comps2:=32; Comps3:=64;
...
if IsComponentSelected('mdload1\137bank1') then Comps1:=Comps1+TmpValue; // а это 31 компонент
TmpValue:=TmpValue*2;
if IsComponentSelected('asi1\fall1') then Comps2:=Comps2+TmpValue; //это уже 33 компонент
TmpValue:=TmpValue*2;
....
 

Krinkels

Он где то тут
Администратор
Я правильно понял?
Судя по тому что написал @Shegorat, Comps1 может содержать только 32 компонента. Соответственно если компонентов больше, то нужно использовать Comps2 и Comps3. Соответственно:
в Comps1 записываем компоненты с 1 по 32
в Comps2 записываем с 33 по 64
а в Comps3 записываем с 65 по 96

if IsComponentSelected('asi1\fall1') then Comps2:=Comps2+TmpValue; //это уже 33 компонент
TmpValue:=TmpValue*2;
По идее да
 

Shegorat

Lord of Madness
Администратор
@robinanis,
Код:
Comps1:= 0; Comps2:= 0; Comps3:= 0;
...
if IsComponentSelected('mdload1\137bank1') then Comps1:=Comps1+TmpValue; // а это 31 компонент
TmpValue:=TmpValue*2;
// 32 компонент

TmpValue:= 1; // сбрасываем счетчик
if IsComponentSelected('asi1\fall1') then Comps2:=Comps2+TmpValue; //это уже 33 компонент
TmpValue:=TmpValue*2;
....
 

Krinkels

Он где то тут
Администратор
Например так
code_language.pascal:
[Setup]
AppName=Serial number project
AppVersion=1.0
DefaultDirName={pf}\Serial number project

[Types]
Name: custom; Description: "Это не будет показываться"; Flags: iscustom

[Components]
Name: scen1;       Description: "Программа А - минимальная установка";  Flags: checkablealone;
Name: scen1\comp1; Description: "Компонент 1"; Types: custom
Name: scen1\comp2; Description: "Компонент 2"; Types: custom
Name: scen1\comp3; Description: "Компонент 3"; Types: custom

Name: scen2;       Description: "Программа А - максимальная установка";  Flags: dontinheritcheck
Name: scen2\comp1; Description: "Компонент 4";
Name: scen2\comp2; Description: "Компонент 5";
Name: scen2\comp3; Description: "Компонент 6";

Name: scen3;       Description: "Plugin для программы Х";  Flags: exclusive; Types: custom
Name: scen3\comp1; Description: "Компонент 7"; Types: custom
Name: scen3\comp2; Description: "Компонент 8"; Types: custom

Name: scen4;       Description: "Plugin для программы Y";  Flags: exclusive
Name: scen4\comp1; Description: "Компонент 9";

Name: scen5;       Description: "Plugin для программы Z";  Flags: exclusive
Name: scen5\comp1; Description: "Компонент 10";
Name: scen5\comp2; Description: "Компонент 11";
Name: scen5\comp3; Description: "Компонент 12";

[Files]
Source: "avz.exe";  DestDir: "{app}"; Components: scen1\comp1
Source: "avz.exe";  DestDir: "{app}"; Components: scen1\comp2
Source: "avz.exe";  DestDir: "{app}"; Components: scen1\comp3
Source: "avz.exe";  DestDir: "{app}"; Components: scen2\comp1
Source: "avz.exe";  DestDir: "{app}"; Components: scen2\comp2
Source: "avz.exe";  DestDir: "{app}"; Components: scen2\comp3
Source: "avz.exe";  DestDir: "{app}"; Components: scen3\comp1
Source: "avz.exe";  DestDir: "{app}"; Components: scen3\comp2
Source: "avz.exe";  DestDir: "{app}"; Components: scen4\comp1
Source: "avz.exe"; DestDir: "{app}"; Components: scen5\comp1
Source: "avz.exe"; DestDir: "{app}"; Components: scen5\comp2
Source: "avz.exe"; DestDir: "{app}"; Components: scen5\comp3
 

robinanis

Новичок
вылетает такая ошибка что это может быть?
просто раньше не было такого, но это новый уже установщик собираю
1645436065669.png
 
Последнее редактирование:

robinanis

Новичок
сделал я первый тестовый прогон который прошел успешно, после убрал ";" со строки "#define records" и запустил компиляцию, которая так же прошла успешно. Запустил установщик и дошел этап до установки, распаковки
окно выглядит так:
1645463421193.png
и через пару секунд после него вылетает ошибка:
1645463497082.png

или вот так при закрытом скрипте:
1645466428731.png

пытаюсь весь день понять в чем дело, читал справку..методом тык...но ничего не меняется..проблема не уходит(
 
Последнее редактирование:
Сверху