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

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

Автор: NightW0lf
Дата сообщения: 02.03.2007 18:04
Sampron

Цитата:
Инсталл кривой, не пашет.

Что именно не так и что не пашет???

Sampron
Посмотри личку.
Автор: maxdddca123
Дата сообщения: 02.03.2007 21:17
Народ, вопрос на засыпку: мне нужно что бы после установки у меня отображалась информация из ртф файла, с картинкой ! Т.Е. у меня в ртф-ом файле помимо текста содержится и картинка, но если я вставляю такой файл в инсталятор InfoAfterFile=C:\In_update_manual.rtf то отображается только текст из этого файла, а картинка нет. Подскажите как можно решить проблему ?
Автор: svs123456789
Дата сообщения: 03.03.2007 11:25
а можно ли сабжем
сменять иконку у папки (в которую инсталлируется прога)
типа [more]'============================
' Создание файла Desktop.ini

' Параметры вызова из TC:
' "%P" "%N"
' или:
' %P%N %T%M
'============================

Dim FSO, TargetDir, IconFile, FileName, oDir, Attr, oFile, MB
Set FSO = CreateObject("Scripting.FileSystemObject")

TargetDir = WScript.Arguments(0)
IconFile = WScript.Arguments(1)
FileName = "Desktop.ini"

If FSO.FolderExists(TargetDir)Then
If Right(TargetDir, 1) <> "\" Then
TargetDir = TargetDir & "\"
End If
Else
MB = MsgBox("Не задано имя папки!", vbOKOnly + vbExclamation, "Создание Desktop.ini")
WScript.Quit
End If
' Установим для папки атрибут "Только чтение"
Attr = 1
Set oDir = FSO.GetFolder(TargetDir)
oDir.Attributes = oDir.Attributes or Attr

'Создадим Desktop.ini
If not FSO.FileExists(TargetDir & FileName) Then
Set oFile = FSO.CreateTextFile(TargetDir & FileName)
oFile.WriteLine "[.ShellClassInfo]"
oFile.WriteLine "IconFile=" & IconFile
oFile.WriteLine "IconIndex=0"
oFile.Close
' Установим для файла атрибуты "Скрытый", "Системный", "Архивный"
Attr = 38
Set oFile = FSO.GetFile(TargetDir & FileName)
oFile.Attributes = oFile.Attributes or Attr
End If

Set FSO = Nothing
Set oDir = Nothing
Set oFile = Nothing
WScript.Quit[/more]
Автор: NightW0lf
Дата сообщения: 03.03.2007 12:58
Кто нибудь может помочь с кодом?

Код:
[Files]
Source: "ISTask.dll"; DestDir: "{tmp}"; Flags: dontcopy noencryption

[Code]
function KillTask(ExeFileName: string): Integer;
external 'KillTask@files:ISTask.dll stdcall delayload';

function RunTask(FileName: string; bFullpath: Boolean): Boolean;
external 'RunTask@files:ISTask.dll stdcall delayload';

function InitializeSetup(): Boolean;
var
ResultCode: Integer;
ResultStr: string;
sn: string;
begin
Result := True;
begin
//Поиск процесса который надо обновить
if RunTask('Compil32.exe', false) then \\здесь ошибка в отладчике на других компах кроме моего
begin
if MsgBox('Программа установки обнаружила, что программа'#13'для которой установится обновление запушена в данный момент. '#13#13' Вы уверенны, что хотите закрыть программу?', mbError, mb_YesNo) = idYes then
begin
KillTask('Compil32.exe');
Result := True;
end else
Exit;
end;
Result := True;
end;
end;
Автор: boss911
Дата сообщения: 03.03.2007 22:31
svs123456789

Цитата:
а можно ли сабжем
сменять иконку у папки (в которую инсталлируется прога)


Ну так постав иконку в папке, потом вытащи с нее Desktop.ini и импортируй в скрипт Inno, потом поменяешь пути на нужные переменные! Например:

Код: [INI]
Filename: {pf}\Inno Setup\Desktop.ini; Section: .ShellClassInfo; Key: IconFile; String: {pf}\Inno Setup\Compil32.exe
Filename: {pf}\Inno Setup\Desktop.ini; Section: .ShellClassInfo; Key: IconIndex; String: 0
Автор: svs123456789
Дата сообщения: 03.03.2007 23:09
boss911
это не работает!

в папке проги создаю desktop.ini
[.ShellClassInfo]
IconFile=icon.ico
IconIndex=0
ConfirmFileOp=0

туда же кладу icon.ico
Автор: boss911
Дата сообщения: 04.03.2007 04:27
svs123456789

Цитата:
это не работает!

Действительно, сам сейчас провозился пол часа, так и не получилось, чтоб всунуть в папку icon.ico и desktop.ini и получить папку с иконкой! Странно, может винда где-то еще пишет что-то, но в реестре нечего нет такого, сам проверял!
Автор: starichok
Дата сообщения: 04.03.2007 10:08

Цитата:
Руссификатор от GloThin

Кто-нибудь может перезалить, а то все ссылки мертвые?
Автор: Sampron
Дата сообщения: 04.03.2007 11:39
starichok
http://data.cod.ru/635272650
Автор: starichok
Дата сообщения: 04.03.2007 19:27
Sampron
Премного благодарен!
Автор: CapsLosk
Дата сообщения: 05.03.2007 07:17
Никто не знает как можно сделать чтобы по завершении компиляции отключался комп?
Автор: NightW0lf
Дата сообщения: 05.03.2007 13:45
CapsLosk

Цитата:
Никто не знает как можно сделать чтобы по завершении компиляции отключался комп?

Установки или именно сборки проекта?
Если сборки - то скачай прогу таймер для выключения компа или воспользцйся средствами винды.
Автор: CapsLosk
Дата сообщения: 06.03.2007 01:41

Цитата:
Установки или именно сборки проекта?
Если сборки - то скачай прогу таймер для выключения компа или воспользцйся средствами винды.

Сборки.
А по части таймера - откуда я знаю сколько времяни будет сборка.
Я тут в версии для печати нашел такую вещь, только не вкурил:


цитата:

Цитата:есть ли в Inno опция (в идеале - ключ в командной строке), с помощью которой можно было бы выключать компьютер после завершения процесса компиляции. Или хотя бы как сделать так, чтобы после завершения компиляции завершался и сам процесс

ответ:
compil32 /cc "c:\isetup\samples\my script.iss"
Автор: omals
Дата сообщения: 06.03.2007 08:26
имеется
[Files]
#define MaxOfficeVer 13
#define I
#sub AddFile
Source: "..\OfficesAddin\*.*"; DestDir: Path2Office; Tasks: OfficeAddin97 OfficeAddin2k; Flags: restartreplace uninsrestartdelete; Check: IsOffice(I);
#endsub
#for {I = 8; I <= MaxOfficeVer; I++} AddFile

[Code]
function IsOffice(I:String) : boolean;
Var
PO, tmpStr: STRING;
begin
Result:=False;
tmpStr:='SOFTWARE\Microsoft\Office\'+ I +'.0\Common\InstallRoot\';
if (RegQueryStringValue(HKLM, tmpStr, 'Path', PO)) then Result:= True;
end;

и при компиляции получаю ошибку типа
Parameter "Check" expression error: Can only call function "ExpandConstant" with parameter lists.
можно ли это както обойти?
Автор: Chanka
Дата сообщения: 06.03.2007 15:48
Ребят очень нужна ваша помощь!!! Короче надо сделать на странице выбора директории кнопочку "сброс". Смысл её таков: путь установки по умолчанию скажем такой C:\My Company\My Program а пользователя допустим он не устраивает и он выбирает такой путь D:\My Company\My Program но потом вдруг передумывает и решает всё-таки использовать первоначальный путь. Так вот чтобы ему самому ничего не пришлось менять и пригодилась бы кнопочка "сброс". Нажимаешь на неё и она возвращает путь по умолчанию. Если кто поможет будет вознагражден кое-чем очень ценным. Очень надеюсь на вашу помощь. Спасибо.
Автор: Genri
Дата сообщения: 06.03.2007 17:19
CapsLosk

Цитата:
Я тут в версии для печати нашел такую вещь, только не вкурил
......
compil32 /cc "c:\isetup\samples\my script.iss"
-- а что конкретно не понятно ? Это параметры запуска для автоматической компиляции указанного скрипта. Подробнее смотри в хелпе раздел Other Information - Command Line Compiler Execution

omals

Цитата:
при компиляции получаю ошибку типа
Parameter "Check" expression error: Can only call function "ExpandConstant" with parameter lists
-- Check: IsOffice(ExpandConstant('{#I}'))



Добавлено:
NightW0lf

Цитата:
ошибка в отладчике на других компах кроме моего
-- какой размер IsTask.dll ? Первые версии могли не работать на компах без установленных делфей. Последняя версия библиотеки вроде как лишена этого недостатка. Найти можно здесь
Размер последней длл - 67584 байта


Добавлено:
boss911

Цитата:
Действительно, сам сейчас провозился пол часа, так и не получилось, чтоб всунуть в папку icon.ico и desktop.ini и получить папку с иконкой! Странно, может винда где-то еще пишет что-то
-- Нет. Больше винда ничего не пишет. Но обрати внимание, что после изменения иконки штатным образом, у папки меняется атрибуты (она становится системной). Другими словами, desktop.ini винда ищет только в системных папках и папках с атрибутом только для чтения. Т.е. скопировать desktop.ini в другую папку можно, но для того, чтобы отобразилась другая иконка, надо еще у этой папки поменять атрибут (выставить системный или только для чтения)
Автор: NightW0lf
Дата сообщения: 06.03.2007 19:41
Genri

Цитата:
-- какой размер IsTask.dll ? Первые версии могли не работать на компах без установленных делфей. Последняя версия библиотеки вроде как лишена этого недостатка. Найти можно здесь
Размер последней длл - 67584 байта

Да я уже с этим разобрался сам. НО все равно спасибо!
Автор: maxdddca123
Дата сообщения: 06.03.2007 21:26
Genri
Ты вернулся ??? Урааааааааааааааааааа !!!! (сори за офтоп, просто этот чел РЕАЛЬНО крут в инно) !!!
Тогда подскажи уж и мне тоже: вопрос на засыпку: мне нужно что бы после установки у меня отображалась информация из ртф файла, с картинкой ! Т.Е. у меня в ртф-ом файле помимо текста содержится и картинка, но если я вставляю такой файл в инсталятор InfoAfterFile=C:\In_update_manual.rtf то отображается только текст из этого файла, а картинка нет. Как можно решить проблему ?
Автор: CapsLosk
Дата сообщения: 07.03.2007 02:15
Genri
С ВОЗВРАСЧЕНИЕМ!!! Рад тебя снова видеть!
Может ты подскажешь - можно ли сделать отключение компа после завершения компиляции?
Автор: Genri
Дата сообщения: 07.03.2007 03:09
CapsLosk
Цитата:
можно ли сделать отключение компа после завершения компиляции?
-- создай батник примерно такого содержания:

compil32 /cc "c:\isetup\samples\my script.iss"
shutdown -s -f -c "Compilation Finished"

... и запускай на компиляцию через этот батник

maxdddca123
Цитата:
нужно что бы после установки у меня отображалась информация из ртф файла, с картинкой
-- картинка отображаться не будет. ограничение TRichEdit. Во всяком случае, способа отобразить битмап в стандартном TRichEdit я не знаю.
Автор: CapsLosk
Дата сообщения: 07.03.2007 04:12
Genri
Спасибо Огромное - очень помог!

Добавлено:
Как то я через батник и не допетрил....
Автор: Chuvakstepan
Дата сообщения: 07.03.2007 06:06
Люди! Нужна ваша помощь
Код: (Не весь, конечно)

Цитата:

procedure ISSI_CurPageChanged(CurPageID: Integer);
begin
if CurPageID=1 then
begin
If WizardForm.FindComponent('NextButton') is TButton
then
TButton(WizardForm.FindComponent('NextButton')).Caption:='Начать Установку >>>';
TButton(WizardForm.FindComponent('NextButton')).Width:=ScaleX(135);
WizardForm.NextButton.Left:=WizardForm.ClientWidth - ScaleX(217 + 10); //Отступ слева кнопки: Отмена.
WizardForm.NextButton.Top:=WizardForm.ClientHeight - ScaleY(23 + 10); //Отступ сверху кнопки: Отмена.
WizardForm.BackButton.Left:=WizardForm.ClientWidth - ScaleX(300 + 10); //Отступ слева кнопки: Отмена.
WizardForm.BackButton.Top:=WizardForm.ClientHeight - ScaleY(23 + 10); //Отступ сверху кнопки: Отмена.
If WizardForm.FindComponent('CancelButton') is TButton
then
TButton(WizardForm.FindComponent('CancelButton')).Caption:='Выход';
end;
begin
if CurPageID=wpInstalling
then
begin
WizardForm.MainPanel.Visible:=False;
WizardForm.Bevel1.Visible:=False;
WizardForm.Width:=ScaleX(395);
WizardForm.Height:=ScaleY(142);
WizardForm.Left:=ScaleX(MainForm.Width-420);
WizardForm.Top:=ScaleY(MainForm.Height-170);
WizardForm.InnerNotebook.Left:=ScaleX(10);
WizardForm.InnerNotebook.Top:=ScaleY(10);
WizardForm.InnerNotebook.Width:=ScaleX(370);
WizardForm.StatusLabel.Left:=ScaleX(0);
WizardForm.StatusLabel.Top:=ScaleY(0);
WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.FileNameLabel.Left:=ScaleX(0);
WizardForm.FileNameLabel.Top:=ScaleY(20);
WizardForm.FileNameLabel.Width:=WizardForm.InnerNotebook.Width;
WizardForm.ProgressGauge.Top:=ScaleY(40);
WizardForm.ProgressGauge.Width:=WizardForm.InnerNotebook.Width;
WizardForm.CancelButton.Left:=ScaleX(154);
WizardForm.CancelButton.Top:=ScaleY(80);
end
if CurPageID=wpFinished
then
begin
WizardForm.Width:=502;{Размер окна по горизонтали}
WizardForm.Height:=392;{Размер окна по вертикали}
WizardForm.Position:=poScreenCenter; {Возврат в исходное состояние}
end
begin
If CurPageID=wpPassword then
begin
SendMessage(WizardForm.NEXTBUTTON.Handle, 513, 0, 0)
SendMessage(WizardForm.NEXTBUTTON.Handle, 514, 0, 0)
end;
end;
end;
end;

procedure ISSI_InitializeWizard();
var
Name1: string;
PlayButton, PauseButton, StopButton: TButton;
Text: TNewStaticText;
Panel1: TPanel;
begin
//Вставляем наш пароль в поле ввода
WizardForm.PasswordEdit.Text := 'тunknown©®™а';

begin
WizardForm.Position := poScreenCenter;
WizardForm.CancelButton.BringToFront;
begin
//Выносим кнопку "Отмена" на передний план
WizardForm.CancelButton.BringToFront;
begin
Panel1 := TPanel.Create(WizardForm);
with Panel1 do
begin
PlayButton := TButton.Create(WizardForm);
PlayButton.Left := 10;
PlayButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
PlayButton.Width := 30;
PlayButton.Caption := '>';
PlayButton.OnClick := @PlayButtonOnClick;
PlayButton.Parent := WizardForm;
PlayButton.Cursor := crHand;
PauseButton := TButton.Create(WizardForm);
PauseButton.Left := 45;
PauseButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
PauseButton.Width:=30;
PauseButton.Caption := 'II';
PauseButton.OnClick := @PauseButtonOnClick;
PauseButton.Parent := WizardForm;
PauseButton.Cursor := crHand;
StopButton := TButton.Create(WizardForm);
StopButton.Left := 80;
StopButton.Top := WizardForm.ClientHeight - ScaleY(23 + 10);
StopButton.Width := 30;
StopButton.Caption := '[]';
StopButton.OnClick := @StopButtonOnClick;
StopButton.Parent := WizardForm;
StopButton.Cursor := crHand;
end;


Нужно чтобы три кнопки управления музыкой меняли свое расположение так же как форма процесса инсталляции (внизу справа, см. руководство). А то окошко инсталляции стало маленьким, и не видно кнопок, хотя они есть
Автор: maxdddca123
Дата сообщения: 07.03.2007 06:34
Genri

Цитата:
-- картинка отображаться не будет. ограничение TRichEdit. Во всяком случае, способа отобразить битмап в стандартном TRichEdit я не знаю.

Ясно, а есть какие нить другие способы ? Может например сделать пустую страничку, где эта картинка будет фоном. Это реально ?
Автор: Chanka
Дата сообщения: 07.03.2007 07:40
Genri,
Пожалуйста можешь помочь мне с кнопочкой "сброс".
Автор: Genri
Дата сообщения: 07.03.2007 10:48
Chanka
Код:
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Files]
Source: Files\*; DestDir: {app}

[Code]
var
RestoreDir: TButton;

procedure ButtonOnClick(Sender: TObject);
begin
WizardForm.DirEdit.Text:= ExpandConstant('{pf}\My Program');
end;

procedure InitializeWizard();
begin
RestoreDir:= TButton.Create(WizardForm);
RestoreDir.Width := WizardForm.DirBrowseButton.Width;
RestoreDir.Height := WizardForm.DirBrowseButton.Height;
RestoreDir.Top := WizardForm.DirBrowseButton.Top + RestoreDir.Height + ScaleX(10);
RestoreDir.Left := WizardForm.DirBrowseButton.Left;
RestoreDir.OnClick := @ButtonOnClick;
RestoreDir.Parent := WizardForm.SelectDirPage;
RestoreDir.Visible:= True;
RestoreDir.Caption := 'Restore Path';
end;
Автор: Chanka
Дата сообщения: 07.03.2007 14:01
Genri Спасибо. То шо нужно. Еще один вопросик и будем праздновать
Можно ли сделать чтобы в этой конструкции удаления сейв файлов происходило из значения реестра?
Просто многие игры кидают свои сёйвы то в мои документы то еще куда.
Ну например: "SOFTWARE\My Company\My Program"; ValueName: "SavedGames"; ValueType: String; ValueData: "{userdocs}"; Flags: uninsdeletekey

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep=usDone then
begin
if DirExists(ExpandConstant('{app}\profiles')) then
begin
if MsgBox('Удалить сохраненные игры?',mbconfirmation, mb_yesno) = IDYES then
begin
DelTree(ExpandConstant('{app}'), True, True, True);
MsgBox('сообщение...', mbinformation, mb_ok);
end;
end;
end;
end;
Автор: Genri
Дата сообщения: 07.03.2007 14:20
svs123456789
boss911

Цитата:
а можно ли сабжем
сменять иконку у папки (в которую инсталлируется прога)


Код:
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program

[Dirs]
Name: {app}; Attribs: system

[Files]
Source: Files\*; DestDir: {app}

[INI]
Filename: {app}\Desktop.ini; Section: ".ShellClassInfo"; Key: "IconFile"; String: "%SystemRoot%\system32\SHELL32.dll"
Filename: {app}\Desktop.ini; Section: ".ShellClassInfo"; Key: "IconIndex"; String: "27"
Автор: boss911
Дата сообщения: 07.03.2007 17:45
Genri

Цитата:
Но обрати внимание, что после изменения иконки штатным образом, у папки меняется атрибуты (она становится системной).

Действительно, так и есть, но коеч-то непонятно, после того, как я в папку кинул ico и ini и сделал атрибут системным с помощью TC, то папка приняла вид иконки! Но, что самое интерестное, то, что в самом ТС данная папка скрылась (отключин показ скрытых и системных файлов\папок), но в винде она показывается, а вот папка, где иконка ставилась штатным виндовым способ, в ТС она видна. Это особенность ТС, почему он не показывает системную папку, когда был установлен в ручную атрибут системный, а со штатным способом - все нормально?

Прошу прощения у админов за маленький оффтоп, а Genri большое спасибо, так как я бы без него и недодумался обратить внимания на изменения атрибутов!


Добавлено:

Чуть-чуть покопавшись, я выяснил, через FAR, что папка с иконкой, поставлена штатным способом, обретает НЕ "системный" атрибут, а "только для чтения", надо было бы мне сразу все проверить не ТC, а FAR-ом!
Автор: Nagual
Дата сообщения: 08.03.2007 00:14
хай, мужики, такой вопрос, необходимо создать инсталляху, где исходные файлы должны браться по пути из реестра, то есть что то типа {reg:HKLM\SOFTWARE\xxx\xxx\4.0,Folder}\file1 и тд
и после установки проиграть wav файл, расположенный в {reg:HKLM\SOFTWARE\xxx\xxx\4.0,Folder}\file1.wav
Возможно лит это?
Автор: MKN
Дата сообщения: 08.03.2007 09:10
Поделитесь пожалуйста русификатором для ScriptMaker (ссылки в шапке не рабочие...)

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: ICONS


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