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

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

Автор: GameOver
Дата сообщения: 01.12.2008 21:01
Вопрос по Inno Setup - сделал выбор языка, все как бы перевелось автоматом, но картинка инсталятора и названия патча остались на русском, а нужно на английском - хотелось бы сделать так, чтобы при выборе языка менялась картинка и название патча.
Как сие можно сделать?
Автор: Diawer
Дата сообщения: 01.12.2008 22:23
support_star

Цитата:
Как убрать иконку (забыл как правильно назвать) которая находится в верхнем левом углу окна установки


Убрать иконку в левом-верхнем углу исталлятора
[_Code]
procedure InitializeWizard();
begin
WizardForm.BorderStyle := bsDialog;
end;

Сменить иконку в левом-верхнем углу исталлятора
[_Files]
Source: icon.ico; DestDir: {tmp}; Flags: dontcopy

[_Code]
function LoadImage(hInst: THandle; ImageName: PChar; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external 'LoadImageA@user32.dll stdcall delayload';

procedure InitializeWizard;
begin
ExtractTemporaryFile('icon.ico');
SendMessage(WizardForm.Handle, $0080, 0, LoadImage(0,ExpandConstant('{tmp}')+'\icon.ico',1,16,16,$1010));
end;
Автор: Forslay
Дата сообщения: 02.12.2008 03:33
Я готов заплатить за этот скин, только пробейте мне его. Писать в личку или ICQ. 800056
Автор: ChVL
Дата сообщения: 02.12.2008 07:34
Имеются два файла: file32 и file64, один из них соответственно надо отправить в директорию при x32, другой – при x64. Использую флаги:
Flags: regserver noregerror onlyifdoesntexist 32bit и
Flags: regserver noregerror onlyifdoesntexist 64bit
При инсталляции выскакивает окно:
«Внутренняя ошибка: Cannot install files to 64-bit locations on this version of Windows»
и установка прерывается.
Добавляю Check-функции:

Код:
[Сode]
function IsWin64: Boolean;
begin
if IsWin64 then
begin
MsgBox('64-bit program files reside in: ' +
ExpandConstant('{pf64}'), mbInformation, MB_OK);
end;
end;

function NotWin64: Boolean;
begin
if NotWin64 then
begin
MsgBox('32-bit program files reside in: ' +
ExpandConstant('{pf}'), mbInformation, MB_OK);
end;
end;
Автор: SotM
Дата сообщения: 02.12.2008 07:39
ChVL
А зачем рекурсивно вызываешь функции?!?! Естественно программа висеть будет!!!!!

skeptik_vdm
Да хоть в "DRIVER Parallel Lines", функция InitializeWizard(); или в "Transformers", функция InitializeWizard()
Скомпилируй все исходники, запусти их и посмотри если это то, что тебе нужно.

GameOver
Да тут люди не особо могут читать исходник скрипта на расстоянии или же читать мысли. Так что лучше выложи свое произведение, дабы все могли узреть и понять в чём суть...
Автор: omals
Дата сообщения: 02.12.2008 08:21
ChVL
[_Files]
Source: "file32" ; DestDir: "{pf}"; Flags: regserver noregerror onlyifdoesntexist; Check: (not MyIsWin64);
Source: "file64" ; DestDir: "{pf}"; Flags: regserver noregerror onlyifdoesntexist; Check: MyIsWin64;

[_Code]
function MyIsWin64: boolean;
begin
if IsWin64 then
begin
MsgBox('64-bit program files reside in: ' + ExpandConstant('{pf}'), mbInformation, MB_OK);
Result:=True;
end
else
begin
MsgBox('32-bit program files reside in: ' + ExpandConstant('{pf}'), mbInformation, MB_OK);
Result:=False;
end;
end

Добавлено:
zhe_zho
[_Code]
var MyPath: String; //глобальная переменна, значение присвоить там где оно уже известно

// добавляем
procedure CurStepChanged(CurStep: TSetupStep);
var
StrPath: String;
begin
if CurStep = ssDone then
begin
RegQueryStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', StrPath);
tmpStr := ';'+ MyPath + ';';
StrPath := StrPath + tmpStr;
RegWriteStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', StrPath);
end;
end;

// для корректного удаления твоего пути
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var
StrPath, tmpStr: String;
begin
if CurStep = ssDone then
begin
RegQueryStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', StrPath);
tmpStr := ';'+ MyPath + ';';
P := Pos(tmpStr, StrPath); //индекс начала вхождения твоей строки
L := Length(tmpStr); //длинна твоего пути (строки)
Delete(StrPath, P, L); // удаляем твою подстроку
RegWriteStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', StrPath);
end;
end;

кажись так
но не уверен будет ли PATH (с твоим дополнением) рабодать до перезагрузки системы
Автор: htuos
Дата сообщения: 02.12.2008 09:36
Forslay

Цитата:
Я готов заплатить за этот скин, только пробейте мне его

если ты про инстал left4dead, то там ручками все нарисовано. тебе никто не мешает самому так сделать
1. цвет формы поменять можно
2. текстуры на кнопки наложить можно. примеров полно
3. цвет edit'ов и цвет текста тоже не сложно менять
4. больше в нем ничего сногсшибательного нету
5. ну, и напоследок - создание этого скина обсуждалось в этой теме. и первичные заготовки скрипта, которые запросто можно довести до конечного варианта тоже здесь были выложены
так что если не лень, то найдешь и разберешься
Автор: mikutu
Дата сообщения: 02.12.2008 10:39
Возможно ли в Inno Corona Skin сделать вместо чекбокса при принятии лицензионного соглашения 2 кнопки (принять и отклонить).
Автор: GameOver
Дата сообщения: 02.12.2008 12:27

Цитата:
SotM
Да тут люди не особо могут читать исходник скрипта на расстоянии или же читать мысли. Так что лучше выложи свое произведение, дабы все могли узреть и понять в чём суть...


Вот выложили пример скрипта, то что есть - http://rapidshare.com/files/169453511/09_photo.iss
Автор: Victor_Dobrov
Дата сообщения: 02.12.2008 12:50
mikutu - вот страница Лицензионного соглашения.

Предложи скриншот с кнопками (не в ущерб тексту лицензии) и я переделаю скин, если твой вариант окажется удобнее.
Автор: ChVL
Дата сообщения: 02.12.2008 13:23
omals
Не работает. Зависает точно так же.
Вопрос: как инсталлятор узнаёт, что именно ему подсунули, х32 или х64? - Ведь весь синтаксис функций построен на том, что он это знает.
Автор: omals
Дата сообщения: 02.12.2008 14:27
ChVL

Цитата:
Вопрос: как инсталлятор узнаёт, что именно ему подсунули, х32 или х64? - Ведь весь синтаксис функций построен на том, что он это знает.

А инсталятор и не знает что ему подсунули
тут уж разработчика проблема
поставить нужный файл для соответственной оськи

Файл хотя б помещает куда надо?
возможно проблема в флаге regserver ?
что за файлы то file32 и file64?
их нужно регистрировать?
можно попробовать ручка в cmd
regsvr32.exe file32
и посмотреть шо даст
Автор: ChVL
Дата сообщения: 02.12.2008 14:50
omals
Если убрать, например, файлы для х64, то все прекрасно работает, но прога получается только для х32, при этом и Check-функции не нужны.
Файлы file32.dll и file64.dll, поэтому и флаг regserver.
Автор: noiseless
Дата сообщения: 02.12.2008 15:30
ChVL
Если копировал так как есть, то там есть ошибочка

[_Files]
Source: "file32" ; DestDir: "{pf}"; Flags: regserver noregerror onlyifdoesntexist; Check: (not MyIsWin64);
Source: "file64" ; DestDir: "{pf}"; Flags: regserver noregerror onlyifdoesntexist; Check: MyIsWin64;

[_Code]
function MyIsWin64: boolean;
begin
if IsWin64 then
begin
MsgBox('64-bit program files reside in: ' + ExpandConstant('{pf}'), mbInformation, MB_OK);
Result:=True;
end
else
begin
MsgBox('32-bit program files reside in: ' + ExpandConstant('{pf}'), mbInformation, MB_OK);
Result:=True;
end;
end
Автор: omals
Дата сообщения: 02.12.2008 15:55
2 ALL
есть ли ктото, кто хорошо знает WiX (Windows Installer XML)
и InnoSetup (хотя это не обязательно)?
ну или может порекомендовать человека (друга, знакомого), у кого есть немного свободного времени, необходимые знания и желание немного заработать

пишите в личку

сорь за офтоп
Автор: ChVL
Дата сообщения: 02.12.2008 16:02
Это я видел. Всё равно не катит. У самой проги железное алиби: вариант х32 работает без проблем. Всё дело только в Check-функции. Ещё странность: не понятно, что такое флаги 32bit и 64bit. В каком только сочетании я их не цеплял, что есть они, что нет их - совершенно без разницы...
Автор: omals
Дата сообщения: 02.12.2008 17:30
noiseless

Цитата:
Result:=True;

нет, не прав
там именно False (винда не 64)

ChVL
непонятно
ну просто попробуй без флагов 32bit и 64bit
[_Files]
Source: "file32" ; DestDir: "{pf}"; Flags: regserver noregerror onlyifdoesntexist; Check: (not IsWin64);
Source: "file64" ; DestDir: "{pf}"; Flags: regserver noregerror onlyifdoesntexist; Check: IsWin64;
своя Check-функция не нужна

Check: IsWin64 - работает железобетонно
Автор: Serega0675
Дата сообщения: 02.12.2008 18:03
Здравствуйте, кто-нибудь подскажет решение задачи, мой вопрос, на предыдущей странице?
Автор: ChVL
Дата сообщения: 02.12.2008 18:42
omals
Пробовал и так, 1:1, что Вы предлагаете. Причём, зависает сразу на кнопке "Установить", т.е. должна идти строка прогресса, а её нет - завис глухой, выход только через диспетчер задач.
Не делать же два варианта проги - для х32 и х64, это уж совсем извращение...
Автор: omals
Дата сообщения: 02.12.2008 18:45
Serega0675

Цитата:
Здравствуйте, вот такой вопрос:
Как сделать, чтоб при выборе компонентов, один искал путь установки из одной ветки реестра, а второй из другой ветки и если какой-то из компонентов не находил ключ с путём установки, то этот компонент нельзя было выбрать?


если правильно понял вопрос, то тоже через Check

[_Components]
Name: component1; Description: "component1"; Check: IsComponent1;
Name: component2; Description: "component2"; Check: IsComponent2;
....

[_Code]
function IsComponent1:boolean;
var
er: boolean;
ResultString: String
begin
Result := False;
er := RegKeyExists(HKLM, 'Моя ветка');
if er then Result:=True; // проверили, что ветка существует
//или
er := RegQueryStringValue(HKCU, 'Моя ветка', 'нужный саб-ключ', ResultString);
// RegQuery.... выбираем по типу данных
if er then Result:=True; // проверили, что саб-ключ существует    
//или
if ResultString='нужное значение' then Result:=True;
end;

и т.д.
Автор: skeptik_vdm
Дата сообщения: 02.12.2008 19:00
Подскажите кто нибудь как сделать чтобы на странице выбора директории снизу на чертой
отображались вот эти надписи:
Требуется места на диске: (объем) Гб
Доступно места на диске: (объем) Гб
Автор: Serega0675
Дата сообщения: 02.12.2008 19:30
omals
Спасибо!

Добавлено:
omals
Ещё раз спасибо, результат превзошел ожидания...
Автор: support_star
Дата сообщения: 02.12.2008 23:34

Цитата:
Diawer


Спасибо за помощь. Уже хоть какой то прогресс.
Автор: Mouzes
Дата сообщения: 03.12.2008 02:55
Парни, прочёл 40 старниц, глаза пухнут, ничего по теме не вижу, может кто уже видел или знает, у меня такой вопрос.

Если создаю программу небольшую по обьёму, то программа нормально получается файлом "prog.exe" и значёк у этого .ехе красивый, как и прописал:

; иконка установочника
SetupIconFile=embedded\chat.ico

Но тут решаил разобрать игру, внести изменения (для сервера) и опять собрать, она более 1.5 гига.
Создётся файл как обычно "igra.exе" но почему то теперь значёк этого .ехе взят не с embedded\chat.ico а банальный, некрасивый квадратный, значок. Ужос просто, может я не то прописываю?

Мне нужно, чтобы значёк установки игры выгдядел симпотно, а не квадратик банальный. Помогите подсказкой, кто может видел инфу.
Автор: sadasaf
Дата сообщения: 03.12.2008 02:57
есть задача (таск) надо что бы когда галочки на ней небыло (то есть она была бы невыбрана) выдавалась табличка ( типа "MsgBox('Желательно сделать резервную копию!' ,mbInformation, mb_Ok);" )
Автор: SotM
Дата сообщения: 03.12.2008 07:23
GameOver

Цитата:
картинка инсталятора и названия патча остались на русском,

Посмотрел я твой скрипт, но так и не понял про какую картинку и название ты говоришь?! Выложи тогда скриншоты.
Автор: ChVL
Дата сообщения: 03.12.2008 07:30
Mouzes
Попробуйте так:
иконку chat.ico положите в папку, где у Вас находится скрипт, и в нём пропишите:

Код: [Setup]
SetupIconFile=chat.ico
Автор: Artem_Butenko
Дата сообщения: 03.12.2008 08:38
Mouzes - то, что у Вас не отображается иконка инсталлятора вина не Inno Setup, а Windows Explorer. Такое случается часто, когда результирующий файл превышает ~300 мб. В таком случае, удобнее включить в скрипт директиву разбиения на диски (см. русскую справку по Inno Setup от Bagira).
Автор: Mouzes
Дата сообщения: 03.12.2008 09:44
Спасибо за помощь, будем читать
Автор: SotM
Дата сообщения: 03.12.2008 16:32
Не подскажет ли кто, что за прикол.
Есть вот такой простой [more=скрипт]

Код:
[Setup]
AppId={{77490711-9E28-4ABB-B1EF-ECC0D01DBBE0}
AppName=zz
DefaultGroupName=group
AppVerName=zzz
DefaultDirName={pf}\testvar
SolidCompression=false
InternalCompressLevel=none
Compression=none

[no]
Код: [/no]
type
    TMyRecord = record
        Var1 : integer;
        Var2 : integer;
    end;

var
    testvar : TMyRecord;

procedure InitializeWizard();
begin
with testvar do
begin
Var1 := 10;
end;
end;

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970

Предыдущая тема: Презентация


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