Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 4]

Закрытая тема
Настройки темы
Скрипты Inno Setup. Помощь и советы [часть 4]

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1265
Благодарности: 1025


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 22-05-2012
Описание: Закрыто
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
Inno Setup. Прочие вопросы.


Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
  • ISTool - неплохой редактор скриптов Inno Setup.
    Последняя версия: 5.3.0.1 [29.09.2009] - Скачать | зеркало;

  • Inno Script Generator - генератор скриптов Inno Setup. Обладает некоторыми полезными функциями, которых нет ни у самого Inno Setup, ни у ISTool.
    Последняя версия: 1.0.3.1 [23.03.2008] - Скачать | зеркало на русифицированную программу;
    Примечание: Родной сайт www.hisoft2000.de более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup Form Designer - редактор страниц Inno Setup, можно создавать свои страницы.
    Последняя версия: 2.0.8 [12.11.2006] - Скачать;
    Примечание: Родной сайт http://isfd.kaju74.de/index.php?isfd более недоступен, поэтому здесь расположены сторонние ссылки.

  • Inno Setup GameScript Generator - программа генерирует скрипты для Inno Setup . С помощью GameScript Generator и Inno Setup вы сможете быстро создать простенький инсталляционный пакет для любой игры. В инсталлятор можно встроить музыку, слайдшоу и фоновый рисунок. Для специалистов созданный скрипт, возможно, будет неплохой заготовкой для дальнейшей модернизации;

  • ISSkin - Программа для создания и добавления в инсталлятор скинов. Инструкция.
    Последняя версия: 3.0.0.0 [19.01.2010] - Скачать;

  • ISSJoiner - Программа для объединения нескольких скриптов InnoSetup в один.
    Последняя версия: 3.0 [23.07.2009]

  • Converter - Программа конвертирует reg-файлы в формат *.iss (формат скриптов Inno Setup).
    Последняя версия: 0.1.4 [13.03.2010] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:
Inno Setup [все вопросы] часть 1
Inno Setup [все вопросы] часть 2
Скрипты Inno Setup. Помощь и советы [часть 3]


Продолжение обсуждения
Скрипты Inno Setup. Помощь и советы [часть 5]

Отправлено: 18:01, 29-08-2011

 

Аватара для R.i.m.s.k.y.

Ветеран


Сообщения: 1640
Благодарности: 536

Профиль | Отправить PM | Цитировать


kangreon, именно поэтому я привел рабочий код

-------
Хороший установщик тот, которого не замечаешь
Оформление в инно пустая трата времени: толку мало, головняка много, а ошибок истчо больше!

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:42, 02-01-2012 | #541



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для Gnom_aka_Lexander

Ветеран


Сообщения: 978
Благодарности: 564

Профиль | Сайт | Отправить PM | Цитировать


Цитата El Sanchez:
Закрепить ярлык на панели задач в Windows 7 (вариант №1) - пример закрепления ярлыка приложения на панели задач в Windows 7, (ссылка на сообщение);
Закрепить ярлык на панели задач в Windows 7 (вариант №2) - пример закрепления ярлыка приложения на панели задач в Windows 7, (ссылка на сообщение); »
Вариант 2 у меня не работает: повисает на строчке
Код: Выделить весь код
for i := 0 to LoadString(hInst, 5386, buf[0], 255)-1 do strVerb := strVerb + Chr(Buf[i]);
в выделенной части. Это первый вопрос, поскольку вариант 2 для меня оптимальнее было-бы использовать.
Второй вопрос - никто не думал над тем, как удалять этот ярлык при деинсталляции?

-------
Я люблю помогать. Но не путайте: "Помогите мне" и "Сделайте за меня" - это совершенно разные понятия.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:05, 02-01-2012 | #542


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


здраствуйте, помоги пж! как сделать эксклюзивный инсталлятор? ( ну там с чёрным фоном и картинкой )

Отправлено: 23:15, 02-01-2012 | #543


Аватара для alert30

Ветеран


Сообщения: 1088
Благодарности: 162

Профиль | Отправить PM | Цитировать


KaStieL139, вот скрипт скина и отображения фоновых картинков, насчет черного фона треубется ISSkin и изменения (выделено черным).
читать дальше »
Код: Выделить весь код
#define NeedSize "15000" 
  
 [Setup] 
 AppName=Napoleon. Total War 
 AppVerName=Napoleon. Total War 
 DefaultDirName={pf}\Napoleon. Total War 
 DisableReadyPage=true 
  
 [Languages] 
 Name: Rus; MessagesFile: "compiler:Languages\Russian.isl"; 
  
 [Files] 
 Source: compiler:ISSkin.dll; DestDir: {tmp}; Flags: dontcopy; 
 Source: Tiger.cjstyles; DestDir: {tmp}; Flags: dontcopy; 
 Source: Image1.bmp; DestDir: {tmp}; Flags: dontcopy; 
 Source: Image2.bmp; DestDir: {tmp}; Flags: dontcopy; 
 Source: Image3.bmp; DestDir: {tmp}; Flags: dontcopy; 
 Source: Image4.bmp; DestDir: {tmp}; Flags: dontcopy; 
  
 [CustomMessages] 
 Rus.Welcome=Вас приветствует Мастер установки {#SetupSetting("AppName")}.%nПрограмма установит {#SetupSetting("AppName")} на Ваш компьтер. 
 Rus.SelectDir=Программа установит игру {#SetupSetting("AppName")} в следующую папку.%nЕсли вы хотите выбрать другую папку, нажмите «Обзор».%nНажмите «Установить», чтобы начать установку игры {#SetupSetting("AppName")}. 
 Rus.Installing=Пожалйуста, подождите, пока игра {#SetupSetting("AppName")} утсновится на Ваш компьютер. 
 Rus.Finished=Установка игры {#SetupSetting("AppName")} завершена.%nВы можете запустить игру с помощью%n соответствующего ярлыка на «Рабочем столе» или из меню «Пуск». 
 Rus.FreeSize=Доступно места на диске: 
 Rus.NeedSize=Требуется места на диске: 
  
 [_code] 
 var 
 BackPanel, WizardPanel, StatusPanel, ImagePanel: TPanel; 
 CaptionLabel: TLabel; BmpFile: TBitmapImage; 
 NeedSpaceLabel,FreeSpaceLabel: TLabel; 
 FreeMB, TotalMB: Cardinal; NeedSize: Integer; 
  
 procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall'; 
 procedure UnloadSkin(); external 'UnloadSkin@files:isskin.dll stdcall'; 
 function ShowWindow(hWnd: Integer; uType: Integer): Integer; external 'ShowWindow@user32.dll stdcall'; 
  
 Function NumToStr(Float: Extended): String; 
 Begin 
     Result:= Format('%.2n', [Float]); StringChange(Result, ',', '.'); 
     while ((Result[Length(Result)] = '0') or (Result[Length(Result)] = '.')) and (Pos('.', Result) > 0) do 
         SetLength(Result, Length(Result)-1); 
 End; 
  
 procedure GetFreeSpaceCaption(Sender: TObject); 
 var 
   Path: String; 
 begin 
   Path := ExtractFileDrive(WizardForm.DirEdit.Text); 
   GetSpaceOnDisk(Path, True, FreeMB, TotalMB); 
   if FreeMB > 1024 then 
     FreeSpaceLabel.Caption := ExpandConstant('{cm:FreeSize} ')+ NumToStr(round(FreeMB/1024*100)/100) + ' Гб' else 
     FreeSpaceLabel.Caption := ExpandConstant('{cm:FreeSize} ')+ IntToStr(FreeMB)+ ' Мб'; 
   if FreeMB < NeedSize then 
     WizardForm.NextButton.Enabled := False else 
   WizardForm.NextButton.Enabled := True; 
 end; 
  
 procedure GetNeedSpaceCaption; 
 begin 
   if NeedSize > 1024 then 
     NeedSpaceLabel.Caption := ExpandConstant('{cm:NeedSize} ')+ NumToStr(round(NeedSize/1024*100)/100) + ' Гб' else 
   NeedSpaceLabel.Caption := ExpandConstant('{cm:NeedSize} ')+ IntToStr(NeedSize)+ ' Мб'; 
 end; 
  
 function InitializeSetup(): Boolean; 
 begin 
 ExtractTemporaryFile('Tiger.cjstyles'); 
 LoadSkin(ExpandConstant('{tmp}\Tiger.cjstyles'), ''); 
 Result := True; 
 end; 
  
 procedure DeinitializeSetup(); 
 begin 
 ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0); 
 UnloadSkin(); 
 end; 
  
 procedure InitializeWizard(); 
 begin 
 NeedSize:= {#NeedSize}; 
    
 ExtractTemporaryFile('Image1.bmp') 
 ExtractTemporaryFile('Image2.bmp') 
 ExtractTemporaryFile('Image3.bmp') 
 ExtractTemporaryFile('Image4.bmp') 
  
 WizardForm.ClientWidth:= ScaleX(800); 
 WizardForm.ClientHeight:= ScaleY(620); 
 WizardForm.Position:= poScreenCenter; 
  
 WizardForm.InnerNotebook.Hide; 
 WizardForm.OuterNotebook.Hide; 
 WizardForm.Font.Name:= 'Georgia'; 
  
 BackPanel:= TPanel.Create(WizardForm) 
 BackPanel.SetBounds(ScaleX(0), ScaleY(0), ScaleX(800), ScaleY(618)) 
 BackPanel.Color:= clWhite 
 BackPanel.BorderStyle:= bsNone 
 BackPanel.ParentBackground:= False 
 BackPanel.ParentColor:= False 
 BackPanel.Parent:= WizardForm 
  
 StatusPanel:= TPanel.Create(WizardForm) 
 StatusPanel.SetBounds(ScaleX(2), ScaleY(2), ScaleX(796), ScaleY(18)) 
 StatusPanel.BorderStyle:= bsNone 
 StatusPanel.ParentBackground:= False 
 StatusPanel.ParentColor:= False 
 StatusPanel.Font.Color:= clWhite 
 StatusPanel.Font.Size:= 12 
 StatusPanel.Font.Style:= [fsBold] 
 StatusPanel.Font.Name:= 'Times New Roman' 
 StatusPanel.Alignment:= taCenter 
 StatusPanel.Parent:= WizardForm 
  
 ImagePanel:= TPanel.Create(WizardForm) 
 ImagePanel.SetBounds(ScaleX(2), ScaleY(21), ScaleX(796), ScaleY(484)) 
 ImagePanel.BorderStyle:= bsNone 
 ImagePanel.ParentBackground:= False 
 ImagePanel.ParentColor:= False 
 ImagePanel.Parent:= WizardForm 
  
 BmpFile:= TBitmapImage.Create(WizardForm) 
 BmpFile.Stretch:= True; 
 BmpFile.SetBounds(ScaleX(0),ScaleY(0), ScaleX(796), ScaleY(484)) 
 BmpFile.Parent:= ImagePanel 
  
 WizardPanel:= TPanel.Create(WizardForm) 
 WizardPanel.SetBounds(ScaleX(2), ScaleY(506), ScaleX(796), ScaleY(110)) 
 WizardPanel.Alignment:= taCenter; 
 WizardPanel.BorderStyle:= bsNone 
 WizardPanel.ParentBackground:= False 
 WizardPanel.ParentColor:= False 
 WizardPanel.Parent:= WizardForm 
  
 CaptionLabel:= TLabel.Create(WizardForm); 
 CaptionLabel.SetBounds(ScaleX(100), ScaleY(5), ScaleX(590), ScaleY(100)); 
 CaptionLabel.AutoSize:= False; 
 CaptionLabel.WordWrap:= True; 
 CaptionLabel.Transparent:= True; 
 CaptionLabel.Font.Color:= $5F8BA2 
 CaptionLabel.Font.Size:= 11 
 CaptionLabel.Font.Style:= [fsBold] 
 CaptionLabel.Alignment:= taCenter; 
 CaptionLabel.Parent:= WizardPanel; 
  
 NeedSpaceLabel:= TLabel.Create(WizardForm); 
 NeedSpaceLabel.SetBounds(ScaleX(5),ScaleY(70),ScaleX(300),ScaleY(20)) 
 NeedSpaceLabel.Transparent:= True; 
 NeedSpaceLabel.Font.Style:= [fsBold] 
 NeedSpaceLabel.Parent:= WizardPanel 
  
 FreeSpaceLabel:= TLabel.Create(WizardForm); 
 FreeSpaceLabel.SetBounds(ScaleX(250), ScaleY(70), ScaleX(300),ScaleY(20)) 
 FreeSpaceLabel.Transparent:= True; 
 FreeSpaceLabel.Font.Style:= [fsBold] 
 FreeSpaceLabel.Parent:= WizardPanel 
  
 WizardForm.DirEdit.OnChange:= @GetFreeSpaceCaption; 
 WizardForm.DirEdit.Text:= WizardForm.DirEdit.Text + #0; 
  
 WizardForm.DirBrowseButton.Parent:= WizardForm 
 WizardForm.DirBrowseButton.Left:= ScaleX(455) 
 WizardForm.DirBrowseButton.Top:= ScaleY(590) 
 WizardForm.DirBrowseButton.Font.Size:= 8 
 WizardForm.DirBrowseButton.Font.Style:= [fsBold] 
  
 WizardForm.DirEdit.Parent:= WizardForm 
 WizardForm.DirEdit.Left:= ScaleX(5) 
 WizardForm.DirEdit.Top:= ScaleY(590) 
 WizardForm.DirEdit.Width:= ScaleX(445) 
 WizardForm.DirEdit.Font.Size:= 8 
 WizardForm.DirEdit.Font.Style:= [fsBold] 
  
 WizardForm.ProgressGauge.Parent:= WizardForm 
 WizardForm.ProgressGauge.Left:= ScaleX(5) 
 WizardForm.ProgressGauge.Top:= ScaleY(590) 
 WizardForm.ProgressGauge.Width:= ScaleX(450) 
  
 WizardForm.StatusLabel.Parent:= WizardPanel 
 WizardForm.StatusLabel.SetBounds(ScaleX(5), ScaleY(52), ScaleX(300), ScaleY(20)) 
 WizardForm.StatusLabel.Font.Style:= [fsBold] 
  
 WizardForm.FilenameLabel.Parent:= WizardPanel 
 WizardForm.FilenameLabel.SetBounds(ScaleX(5), ScaleY(68), ScaleX(450), ScaleY(20)) 
 WizardForm.FilenameLabel.Font.Style:= [fsBold] 
  
 WizardForm.CancelButton.BringToFront; 
 WizardForm.CancelButton.Left:= ScaleX(715) 
 WizardForm.CancelButton.Top:= ScaleY(590) 
 WizardForm.CancelButton.Font.Size:= 8 
 WizardForm.CancelButton.Font.Style:= [fsBold] 
  
 WizardForm.NextButton.BringToFront; 
 WizardForm.NextButton.Left:= ScaleX(630) 
 WizardForm.NextButton.Top:= ScaleY(590) 
 WizardForm.NextButton.Font.Size:= 8 
 WizardForm.NextButton.Font.Style:= [fsBold] 
  
 WizardForm.BackButton.BringToFront; 
 WizardForm.BackButton.Left:= ScaleX(545) 
 WizardForm.BackButton.Top:= ScaleY(590) 
 WizardForm.BackButton.Font.Size:= 8 
 WizardForm.BackButton.Font.Style:= [fsBold] 
 end; 
  
 procedure CurPageChanged(CurPageID: Integer); 
 begin 
 WizardForm.DirEdit.Hide; WizardForm.DirBrowseButton.Hide; 
 WizardForm.Progressgauge.Hide; WizardForm.StatusLabel.Hide; 
 WizardForm.FilenameLabel.Hide; FreeSpaceLabel.Hide; 
 NeedSpaceLabel.Hide; 
 case CurPageID of 
   wpWelcome: 
     begin 
     CaptionLabel.Caption:= ExpandConstant('{cm:Welcome}') 
     StatusPanel.Caption:= 'Приветствие' 
     BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image1.bmp')) 
     end; 
   wpSelectDir: 
     begin 
     WizardForm.DirEdit.Show; WizardForm.DirBrowseButton.Show; 
     FreeSpaceLabel.Show; NeedSpaceLabel.Show; 
     CaptionLabel.Caption:= ExpandConstant('{cm:SelectDir}') 
     StatusPanel.Caption:= 'Подготовка к установке' 
     WizardForm.NextButton.Caption:= 'Установить' 
     BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image2.bmp')) 
     GetNeedSpaceCaption; if FreeMB < NeedSize then WizardForm.NextButton.Enabled:=False; 
     end; 
   wpInstalling: 
     begin 
     WizardForm.Progressgauge.Show; WizardForm.StatusLabel.Show; 
     WizardForm.FilenameLabel.Show; 
     CaptionLabel.Caption:= ExpandConstant('{cm:Installing}') 
     StatusPanel.Caption:= 'Установка' 
     BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image3.bmp')) 
     end; 
   wpFinished: 
     begin 
     CaptionLabel.Caption:= ExpandConstant('{cm:Finished}') 
     StatusPanel.Caption:= 'Завершение' 
     BmpFile.Bitmap.LoadFromFile(ExpandConstant('{tmp}\Image4.bmp')) 
     end; 
 end; 
 end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:55, 02-01-2012 | #544


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Alert30 спасибо большое, а можешь написать что нужно делать в IS Skin? заранее спасибо!

Отправлено: 02:42, 03-01-2012 | #545


Забанен


Сообщения: 216
Благодарности: 62

Профиль | Цитировать


Цитата Лександер:
Закрепить ярлык на панели задач в Windows 7 »
Тоже заинтересовал вопрос по поводу.
Нашёл только это. Слушайте, а вот без заморочек с кодами и реестром можно это как то обойти? А то уж больно всё запущено.

Отправлено: 03:37, 03-01-2012 | #546


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Люди подскажите пж что вот здесь писать

мне в этом скрипте почти всё непонятно, незнаю где что прописывать! мне хотябы что бы в инсталляторе была картинка! а остальное не важно! а как сделать не знаю((((

Последний раз редактировалось KaStieL139, 03-01-2012 в 03:55.


Отправлено: 03:38, 03-01-2012 | #547


Аватара для alert30

Ветеран


Сообщения: 1088
Благодарности: 162

Профиль | Отправить PM | Цитировать


KaStieL139,
Цитата KaStieL139:
а можешь написать что нужно делать в IS Skin? »
Цитата KaStieL139:
мне в этом скрипте почти всё непонятно, незнаю где что прописывать! мне хотя бы что бы в инсталляторе была картинка! а остальное не важно! а как сделать не знаю(((( »
Необходимо скачать DLL-ку ISSkin.7z в аттачменте, распаковать - будет папка, который внутри лежит эта DLL-ка; потом его положить в C:\Program Files\Inno Setup 5, затем можешь использовать стиль Inno Setup в формате .cjstyles (код выделено черным жирным шрифтом).

P.S. В общем этот общий готовый скрипт, должен получится так.

P.S.S. Если что выкладываю готовые скрипты от BadBoy: http://rghost.ru/35718036

Последний раз редактировалось alert30, 30-03-2012 в 06:32.

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:47, 03-01-2012 | #548


Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1265
Благодарности: 1025

Профиль | Отправить PM | Цитировать


Цитата Лександер:
Вариант 2 у меня не работает: повисает на строчке »
Лександер, уверен, что на этой? Массив buf не пуст на этом этапе? Другими словами, LoadString отрабатывает? hInst не равен 0? Ты не первый кто жалуется на зависон, может антивирь не дает в shell32.dll залазить? В общем есть повод пересмотреть код.

Цитата Лександер:
Второй вопрос - никто не думал над тем, как удалять этот ярлык при деинсталляции? »
Лександер, метод тот же, ресурс другой будет - 5387.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:27, 03-01-2012 | #549


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


я в формате cjstyles ничего не нашёл((

Отправлено: 15:03, 03-01-2012 | #550



Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 4]

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Test ferget Тест-форум 0 24-08-2011 01:25
test ! ! Aaa ! ! Тест-форум 0 23-04-2011 11:29
test Santa aka Snt Тест-форум 0 16-04-2011 22:35
test xolod. Программное обеспечение Linux и FreeBSD 0 19-04-2009 21:03
Test memory KEugeNik Хочу все знать 11 23-11-2003 23:11




 
Переход