![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 8] |
|
Скрипты Inno Setup. Помощь и советы [часть 8]
|
Ветеран Сообщения: 1274 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы (Archive Pack 1):
Скрипты Inno Setup. Помощь и советы [часть 6] Скрипты Inno Setup. Помощь и советы [часть 7] |
|
Отправлено: 08:52, 02-02-2015 |
Ветеран Сообщения: 862
|
Профиль | Отправить PM | Цитировать |
------- Последний раз редактировалось jameszero, 31-07-2015 в 13:47. Отправлено: 19:26, 30-07-2015 | #831 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать Цитата vadjliss:
|
|
Отправлено: 23:33, 30-07-2015 | #832 |
Забанен Сообщения: 96
|
спасибо вы как всегда на высоте
ещё вопрос создаю инсталятор что бы распаковывал на рабочий стол но он создаёт ветку в реестре и файлы unins000.exe помогите со скриптом чтобы чисто распаковывал на рабочий стол без лишних файлов |
Отправлено: 14:18, 01-08-2015 | #833 |
Ветеран Сообщения: 862
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 14:50, 01-08-2015 | #834 |
Забанен Сообщения: 96
|
ребята а скриптом помочь можете чтобы был инстолятор и распаковка portable в одном
|
Отправлено: 17:31, 01-08-2015 | #835 |
Старожил Сообщения: 440
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 18:38, 01-08-2015 | #836 |
Забанен Сообщения: 96
|
спасибо nik1967
|
Отправлено: 20:21, 01-08-2015 | #837 |
Забанен Сообщения: 96
|
ребята у меня инстолятор и распаковка portable в одном
как сделать чтобы в portable распаковывалась другая папка Скрытый текст
#define MyAppName "Icecream PDF Converter"
#define MyAppExeName "pdfconverter.exe" [Setup] AppName=My Program AppVerName=My Program DefaultDirName={pf}\My Program OutputDir=. SetupIconFile=C:\Users\111\Desktop\скрипт\image\1.ico Uninstallable=IsChecked CreateUninstallRegKey=IsChecked [Languages] Name: ru; MessagesFile: compiler:Languages\Russian.isl; [Tasks] Name: "desktopicon"; Description: "Ярлык(и) на «Рабочем столе»"; GroupDescription: "Дополнительно:"; Check: IsChecked [Icons] Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon [Files] Source: C:\Users\111\Desktop\Новая папка\ProgramFilesFolder\Icecream PDF Converter\pdfconverter.exe; DestDir: {app}; Flags: ignoreversion Source: C:\Users\111\Desktop\Новая папка\WindowsFolder\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs [CustomMessages] HeaderLabelPage=Выбор типа установки LabelPage=Выберите нужный тип установки MyRadioCaption_1=Распаковка MyRadioCaption_2=Обычная установка PageTextHeader=На этой странице Вы можете выбрать тип установки, который для Вас наиболее удобен. MyText_1=Будет произведена распаковка в паку,%nуказанную на следующей странице MyText_2=Будет произведена стандартная установка Extracted=Распаковка — %1 ExtractedFolder=Выбор папки распаковки ExtractedFolder2=В какую папку вы хотите распаковать %1? ExtractedFolder3=Программа распакует %1 в следующую папку. ExtractedFolder4=Программа установит %1 в следующую папку. Installing=Распаковка... InstallingLabel=Пожалуйста, подождите, пока %1 распакуется на ваш компьютер. FinishedHeadingLabel=Завершение распаковки%n%1 FinishedLabelNoIcons=Программа %1 распакована на Ваш компьютер.%n%nНажмите «Завершить», чтобы выйти из программы распаковки. [UninstallDelete] Type: filesandordirs; Name: {app} [code] const DI_NORMAL = 3; var MyNewPage: TWizardPage; Rect: TRect; HIcon: LongInt; AIconFileName: String; MyRadioBtn_1, MyRadioBtn_2: TNewRadioButton; function GetModuleHandle(lpModuleName: LongInt): LongInt; external 'GetModuleHandleA@kernel32.dll stdcall'; function ExtractIcon(hInst: LongInt; lpszExeFileName: AnsiString; nIconIndex: LongInt): LongInt; external 'ExtractIconA@shell32.dll stdcall'; function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur: LongInt; hbrFlickerFreeDraw, diFlags: LongInt): LongInt;external 'DrawIconEx@user32.dll stdcall'; function DestroyIcon(hIcon: LongInt): LongInt; external 'DestroyIcon@user32.dll stdcall'; function IsChecked: Boolean; begin Result:= MyRadioBtn_2.checked; end; procedure RadBtnOnClick(Sender: TObject); begin case Sender of MyRadioBtn_1: begin WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; MyRadioBtn_2: begin WizardForm.Caption:= FmtMessage(SetupMessage(msgSetupWindowTitle), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder4}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; end; end; procedure GetInstTypePage(); begin MyNewPage:= CreateCustomPage(wpWelcome, ExpandConstant('{cm:HeaderLabelPage}'), ExpandConstant('{cm:LabelPage}')); try // в конкретном примере из этого файла (C:\Windows\System32\shell32.dll) берём иконки, для пробного показа. // Можно использовать обычные .ico AIconFileName:= ExpandConstant('{sys}\shell32.dll'); // Rect.Left:= 0; Rect.Top:= 0; Rect.Right:= 32; Rect.Bottom:= 32; hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 26); try with TBitmapImage.Create(WizardForm) do begin Left:= ScaleX(15); Top:= ScaleY(68); Width:= 32; Height:= 32; with Bitmap do begin Width:= 32; Height:= 32; Canvas.Brush.Color:= clBtnFace; Canvas.FillRect(Rect); DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL); end; Parent:= MyNewPage.Surface; end; finally DestroyIcon(hIcon); end; hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 19); try with TBitmapImage.Create(WizardForm) do begin Left:= ScaleX(15); Top:= ScaleY(138); Width:= 32; Height:= 32; with Bitmap do begin Width:= 32; Height:= 32; Canvas.Brush.Color:= clBtnFace; Canvas.FillRect(Rect); DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL); end; Parent:= MyNewPage.Surface; end; finally DestroyIcon(hIcon); end; except end; with TNewStaticText.Create(WizardForm) do begin Width:= WizardForm.InnerNotebook.Width; Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:PageTextHeader}'); Parent:= MyNewPage.Surface; end; MyRadioBtn_1:= TNewRadioButton.Create(WizardForm); with MyRadioBtn_1 do begin Top:= ScaleY(50); Width:= ScaleX(150); Caption:= ExpandConstant('{cm:MyRadioCaption_1}'); OnClick:= @RadBtnOnClick; Parent:= MyNewPage.Surface; end; with TNewStaticText.Create(WizardForm) do begin Left:= ScaleX(60); Top:= ScaleY(68); Width:= WizardForm.InnerNotebook.Width - ScaleX(60); Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:MyText_1}'); Parent:= MyNewPage.Surface; end; MyRadioBtn_2:= TNewRadioButton.Create(WizardForm); with MyRadioBtn_2 do begin Top:= ScaleY(120); Width:= ScaleX(150); Caption:= ExpandConstant('{cm:MyRadioCaption_2}'); Checked:= True; OnClick:= @RadBtnOnClick; Parent:= MyNewPage.Surface; end; with TNewStaticText.Create(WizardForm) do begin Left:= ScaleX(60); Top:= ScaleY(138); Width:= WizardForm.InnerNotebook.Width - ScaleX(60); Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:MyText_2}'); Parent:= MyNewPage.Surface; end; end; function ShouldSkipPage(PageID: Integer): Boolean; begin if (PageID > wpSelectDir) and (PageID < wpInstalling) and (MyRadioBtn_1.Checked) then Result:= True; end; procedure InitializeWizard(); begin GetInstTypePage(); WizardForm.DiskSpaceLabel.Hide; end; procedure CurPageChanged(CurPageID: Integer); begin if not IsChecked then begin case CurPageID of wpSelectDir: begin WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:ExtractedFolder}'); WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder2}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]); if IsChecked then WizardForm.DirEdit.Text := ExpandConstant( '{pf}\{#SetupSetting("AppName")}' ) else WizardForm.DirEdit.Text := ExpandConstant( '{src}\{#SetupSetting("AppName")}' ); end; wpInstalling: begin WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:Installing}'); WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:InstallingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; wpFinished: begin WizardForm.FinishedHeadingLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedHeadingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.FinishedLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedLabelNoIcons}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; end; end; end; |
Последний раз редактировалось vadjliss, 01-08-2015 в 22:01. Отправлено: 21:01, 01-08-2015 | #838 |
![]() Ветеран Сообщения: 863
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 23:35, 01-08-2015 | #839 |
Забанен Сообщения: 96
|
спасибо Dodakaedr
но мне нужно чтобы portable распаковывала свою папку которая будет в инстоляторе а здесь [Files] Source: "ваша папка\*"; DestDir: "{app}"; Check: "not IsChecked"; Flags: ignoreversion createallsubdirs recursesubdirs короче надо что бы portable не трогала папку инстолятора вот мой код скрипт
[code]#define MyAppName "Icecream PDF Converter"
#define MyAppExeName "pdfconverter.exe" [Setup] AppName=My Program AppVerName=My Program DefaultDirName={pf}\My Program OutputDir=. SetupIconFile=C:\Users\111\Desktop\скрипт\image\1.ico Uninstallable=IsChecked CreateUninstallRegKey=IsChecked [Languages] Name: ru; MessagesFile: compiler:Languages\Russian.isl; [Tasks] Name: "desktopicon"; Description: "Ярлык(и) на «Рабочем столе»"; GroupDescription: "Дополнительно:"; Check: IsChecked [Icons] Name: {commondesktop}\{#MyAppName}; Filename: {app}\{#MyAppExeName}; Tasks: desktopicon [Files] Source: C:\Users\111\Desktop\Новая папка\ProgramFilesFolder\Icecream PDF Converter\pdfconverter.exe; DestDir: {app}; Flags: ignoreversion Source: C:\Users\111\Desktop\Новая папка\WindowsFolder\*; DestDir: {app}; Flags: ignoreversion recursesubdirs createallsubdirs Source: "C:\Users\111\Desktop\Новая папка\DesktopFolder\*"; DestDir: "{app}"; Check: "not IsChecked"; Flags: ignoreversion createallsubdirs recursesubdirs [CustomMessages] HeaderLabelPage=Выбор типа установки LabelPage=Выберите нужный тип установки MyRadioCaption_1=Распаковка MyRadioCaption_2=Обычная установка PageTextHeader=На этой странице Вы можете выбрать тип установки, который для Вас наиболее удобен. MyText_1=Будет произведена распаковка в паку,%nуказанную на следующей странице MyText_2=Будет произведена стандартная установка Extracted=Распаковка — %1 ExtractedFolder=Выбор папки распаковки ExtractedFolder2=В какую папку вы хотите распаковать %1? ExtractedFolder3=Программа распакует %1 в следующую папку. ExtractedFolder4=Программа установит %1 в следующую папку. Installing=Распаковка... InstallingLabel=Пожалуйста, подождите, пока %1 распакуется на ваш компьютер. FinishedHeadingLabel=Завершение распаковки%n%1 FinishedLabelNoIcons=Программа %1 распакована на Ваш компьютер.%n%nНажмите «Завершить», чтобы выйти из программы распаковки. [UninstallDelete] Type: filesandordirs; Name: {app} [code] const DI_NORMAL = 3; var MyNewPage: TWizardPage; Rect: TRect; HIcon: LongInt; AIconFileName: String; MyRadioBtn_1, MyRadioBtn_2: TNewRadioButton; function GetModuleHandle(lpModuleName: LongInt): LongInt; external 'GetModuleHandleA@kernel32.dll stdcall'; function ExtractIcon(hInst: LongInt; lpszExeFileName: AnsiString; nIconIndex: LongInt): LongInt; external 'ExtractIconA@shell32.dll stdcall'; function DrawIconEx(hdc: LongInt; xLeft, yTop: Integer; hIcon: LongInt; cxWidth, cyWidth: Integer; istepIfAniCur: LongInt; hbrFlickerFreeDraw, diFlags: LongInt): LongInt;external 'DrawIconEx@user32.dll stdcall'; function DestroyIcon(hIcon: LongInt): LongInt; external 'DestroyIcon@user32.dll stdcall'; function IsChecked: Boolean; begin Result:= MyRadioBtn_2.checked; end; procedure RadBtnOnClick(Sender: TObject); begin case Sender of MyRadioBtn_1: begin WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; MyRadioBtn_2: begin WizardForm.Caption:= FmtMessage(SetupMessage(msgSetupWindowTitle), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder4}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; end; end; procedure GetInstTypePage(); begin MyNewPage:= CreateCustomPage(wpWelcome, ExpandConstant('{cm:HeaderLabelPage}'), ExpandConstant('{cm:LabelPage}')); try // в конкретном примере из этого файла (C:\Windows\System32\shell32.dll) берём иконки, для пробного показа. // Можно использовать обычные .ico AIconFileName:= ExpandConstant('{sys}\shell32.dll'); // Rect.Left:= 0; Rect.Top:= 0; Rect.Right:= 32; Rect.Bottom:= 32; hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 26); try with TBitmapImage.Create(WizardForm) do begin Left:= ScaleX(15); Top:= ScaleY(68); Width:= 32; Height:= 32; with Bitmap do begin Width:= 32; Height:= 32; Canvas.Brush.Color:= clBtnFace; Canvas.FillRect(Rect); DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL); end; Parent:= MyNewPage.Surface; end; finally DestroyIcon(hIcon); end; hIcon:= ExtractIcon(GetModuleHandle(0), AIconFileName, 19); try with TBitmapImage.Create(WizardForm) do begin Left:= ScaleX(15); Top:= ScaleY(138); Width:= 32; Height:= 32; with Bitmap do begin Width:= 32; Height:= 32; Canvas.Brush.Color:= clBtnFace; Canvas.FillRect(Rect); DrawIconEx(Canvas.Handle, 0, 0, HIcon, 32, 32, 0, 0, DI_NORMAL); end; Parent:= MyNewPage.Surface; end; finally DestroyIcon(hIcon); end; except end; with TNewStaticText.Create(WizardForm) do begin Width:= WizardForm.InnerNotebook.Width; Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:PageTextHeader}'); Parent:= MyNewPage.Surface; end; MyRadioBtn_1:= TNewRadioButton.Create(WizardForm); with MyRadioBtn_1 do begin Top:= ScaleY(50); Width:= ScaleX(150); Caption:= ExpandConstant('{cm:MyRadioCaption_1}'); OnClick:= @RadBtnOnClick; Parent:= MyNewPage.Surface; end; with TNewStaticText.Create(WizardForm) do begin Left:= ScaleX(60); Top:= ScaleY(68); Width:= WizardForm.InnerNotebook.Width - ScaleX(60); Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:MyText_1}'); Parent:= MyNewPage.Surface; end; MyRadioBtn_2:= TNewRadioButton.Create(WizardForm); with MyRadioBtn_2 do begin Top:= ScaleY(120); Width:= ScaleX(150); Caption:= ExpandConstant('{cm:MyRadioCaption_2}'); Checked:= True; OnClick:= @RadBtnOnClick; Parent:= MyNewPage.Surface; end; with TNewStaticText.Create(WizardForm) do begin Left:= ScaleX(60); Top:= ScaleY(138); Width:= WizardForm.InnerNotebook.Width - ScaleX(60); Height:= ScaleY(26); WordWrap:= True; Caption:= ExpandConstant('{cm:MyText_2}'); Parent:= MyNewPage.Surface; end; end; function ShouldSkipPage(PageID: Integer): Boolean; begin if (PageID > wpSelectDir) and (PageID < wpInstalling) and (MyRadioBtn_1.Checked) then Result:= True; end; procedure InitializeWizard(); begin GetInstTypePage(); WizardForm.DiskSpaceLabel.Hide; end; procedure CurPageChanged(CurPageID: Integer); begin if not IsChecked then begin case CurPageID of wpSelectDir: begin WizardForm.Caption:= FmtMessage(ExpandConstant('{cm:Extracted}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:ExtractedFolder}'); WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder2}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.SelectDirLabel.Caption:= FmtMessage(ExpandConstant('{cm:ExtractedFolder3}'), [ExpandConstant('{#SetupSetting("AppName")}')]); if IsChecked then WizardForm.DirEdit.Text := ExpandConstant( '{pf}\{#SetupSetting("AppName")}' ) else WizardForm.DirEdit.Text := ExpandConstant( '{src}\{#SetupSetting("AppName")}' ); end; wpInstalling: begin WizardForm.PageNameLabel.Caption:= ExpandConstant('{cm:Installing}'); WizardForm.PageDescriptionLabel.Caption:= FmtMessage(ExpandConstant('{cm:InstallingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; wpFinished: begin WizardForm.FinishedHeadingLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedHeadingLabel}'), [ExpandConstant('{#SetupSetting("AppName")}')]); WizardForm.FinishedLabel.Caption:= FmtMessage(ExpandConstant('{cm:FinishedLabelNoIcons}'), [ExpandConstant('{#SetupSetting("AppName")}')]); end; end; end; end; извините но очень нужно |
Последний раз редактировалось vadjliss, 02-08-2015 в 15:52. Отправлено: 06:01, 02-08-2015 | #840 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты Inno Setup. Помощь и советы [часть 7] | El Sanchez | Автоматическая установка приложений | 2499 | 02-02-2015 08:59 | |
Скрипты Inno Setup. Помощь и советы [часть 6] | El Sanchez | Автоматическая установка приложений | 2494 | 10-03-2014 11:51 | |
Скрипты Inno Setup. Помощь и советы [часть 5] | El Sanchez | Автоматическая установка приложений | 1999 | 28-03-2013 19:09 | |
Скрипты Inno Setup. Помощь и советы [часть 4] | El Sanchez | Автоматическая установка приложений | 2099 | 22-05-2012 23:16 | |
Скрипты Inno Setup. Помощь и советы [часть 3] | Serega | Автоматическая установка приложений | 3755 | 26-10-2011 17:58 |
|