![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 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 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать vk_k14m@vk, да, четвёртый параметр. Надо ж было мне так обсчитаться
![]() Цитата vk_k14m@vk:
![]() |
|
Отправлено: 06:58, 06-11-2017 | #2261 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 342
|
Профиль | Отправить PM | Цитировать Iska, что ж буду проверять)
|
------- Отправлено: 07:00, 06-11-2017 | #2262 |
SHVtYW4= Сообщения: 3451
|
Профиль | Отправить PM | Цитировать Цитата vk_k14m@vk:
|
|
------- Отправлено: 10:07, 06-11-2017 | #2263 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать скажите, пожалуйста, можно ли как-то научить писать инно в ini через секцию ini в UTF8?
или как-то сконвертировать потом сформированный установщиком ниншник в utf8? |
------- Отправлено: 18:30, 09-11-2017 | #2264 |
Старожил Сообщения: 440
|
Профиль | Сайт | Отправить PM | Цитировать R.i.m.s.k.y., а что, разве не сохраняет в UTF8?
Скрытый текст
![]() |
------- Отправлено: 07:20, 11-11-2017 | #2265 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать nik1967, надо сохранение в UTF-8 создаваемого разделом [INI] инсталлятора ini-файла. Но дело в том, что WritePrivateProfileString()/GetPrivateProfileString() не работают с UTF-8. Ещё не существующий файл будет создаваться посредством WritePrivateProfileStringA() в ANSI/1251. Если предварительно создать искомый пустой ini-файл в UTF-16LE/1200 — будет использоваться WritePrivateProfileStringW(). Аналогично будет работать и при удалении. Но вот путей совместить раздел [INI] и UTF-8 я не вижу.
Можно попробовать оставить создание ini-файла из раздела [INI] как есть, а на заключительном этапе после установки просто взять и кодом прочитать содержимое файла, а затем посредством SaveStringsToUTF8File() перезаписать его. Для деинсталляции проделать обратное — на предварительном этапе прочитать UTF-8 и записать содержимое в ANSI, чтобы деинсталлятор смог отработать указанными выше функциями. Это, конечно, предварительные соображения, я их даже не проверял. P.S. По поводу скриншота с примером: если в файле нет многобайтовых символов (например, той же кириллицы), то UTF-8 без BOM ничем не отличается от ANSI/1251. |
Отправлено: 08:02, 11-11-2017 | #2266 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата R.i.m.s.k.y.:
Скрытый текст
[INI] Filename: "{src}\test.ini"; Section: "test"; Key: "test"; String: {code:UTF8Encode|this is чёрт знает что за うんこ} [Code] const CP_ACP = 0; CP_UTF8 = 65001; // Unicode and Character Set Functions function WideCharToMultiByte(CodePage: UINT; dwFlags: DWORD; lpWideCharStr: string; cchWideChar: Integer; lpMultiByteStr: AnsiString; cbMultiByte, lpDefaultChar: Integer; lpUsedDefaultChar: Longint): Integer; external 'WideCharToMultiByte@kernel32.dll stdcall'; function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD; lpMultiByteStr: AnsiString; cbMultiByte: Integer; lpWideCharStr: string; cchWideChar: Integer): Integer; external 'MultiByteToWideChar@kernel32.dll stdcall'; ///////////////////////////////////////////////// function UTF8Encode(const Value: string): string; var Len: Integer; UTF16Buffer: string; UTF8Buffer: AnsiString; begin if Value = '' then Exit; #ifndef UNICODE Len := MultiByteToWideChar(CP_ACP, 0, Value, -1, '', 0); if Len = 0 then Exit; UTF16Buffer := StringOfChar(#0, Len shl 1); if MultiByteToWideChar(CP_ACP, 0, Value, -1, UTF16Buffer, Len) = 0 then Exit; #else UTF16Buffer := Value; #endif Len := WideCharToMultiByte(CP_UTF8, 0, UTF16Buffer, -1, '', 0, 0, 0); if Len = 0 then Exit; UTF8Buffer := StringOfChar(#0, Len - 1); if WideCharToMultiByte(CP_UTF8, 0, UTF16Buffer, -1, UTF8Buffer, Len, 0, 0) = 0 then Exit; Result := UTF8Buffer; end; |
|
Отправлено: 11:59, 11-11-2017 | #2267 |
Старожил Сообщения: 342
|
Профиль | Отправить PM | Цитировать Как можно запускать приложение через секцию [Сode] с параметрами.
Например в секции [Run] все просто [Run] Filename: "{sys}\CMD.EXE"; WorkingDir: "{app}\data"; Parameters: /C RD /S /Q jg2e00_00_00 [Соde] procedure unpack_this_file_xx(); var res:integer; file, path : string; begin file := ExpandConstant('{app}\data\Decrypt.bat'); path := ExpandConstant('{app}'); if FileExists(file) then Exec(file, 'параметры',path,SW_HIDE,ewWaitUntilTerminated,res) else MsgBox('Файл' + ' ' + file + #13#10 + 'не найден', mbInformation, MB_OK); end; *** И еще. Можно сделать еще одно окно с индикатором выполнения? У меня через секцию [Сode] запускается 101 приложение. И в [Run] еще 178. Хотелось бы наглядно видеть ход их выполнения... |
------- Последний раз редактировалось vk_k14m@vk, 15-11-2017 в 07:25. Отправлено: 20:53, 13-11-2017 | #2268 |
Новый участник Сообщения: 42
|
Профиль | Отправить PM | Цитировать парни, проблема я отключил папку установки , но теперь не отображается дополнительные программы Microsoft Visual C++ может кто поправит
скрипт
[Setup] DisableWelcomePage=yes DisableReadyPage=yes DisableFinishedPage=yes Compression=none RestartIfNeededByRun=no AppName=vbvb AppVersion=5 CreateAppDir=False [Files] Source: "C:\Users\ww\Desktop\длполнение\W.bmp"; Flags: dontcopy [Run] Filename: {src}\Redist\vcredist_x86.exe; Parameters: /q; StatusMsg: Устанавливаем Microsoft Visual C++ 2005 Redist...; Flags: skipifdoesntexist; Check: MicrosoftVisualCheck var BitmapImage1: TBitmapImage; Panel1: TPanel; Reg: TLabel; DopSoft: TNewCheckBox; function MicrosoftVisualCheck: Boolean; begin Result := DopSoft.Checked; end; procedure InitializeWizard(); begin WizardForm.ClientWidth:=ScaleX(500); WizardForm.ClientHeight:=ScaleY(120); WizardForm.Center; WizardForm.OuterNotebook.Hide; WizardForm.InnerNotebook.Hide; WizardForm.Bevel.Hide; BitmapImage1 := TBitmapImage.Create(WizardForm); with BitmapImage1 do begin Parent := WizardForm; Left := ScaleX(5); Top := ScaleY(5); Width := ScaleX(64); Height := ScaleY(64); ExtractTemporaryFile('W.bmp'); Bitmap.LoadFromFile(ExpandConstant('{tmp}\W.bmp')); end; Panel1 := TPanel.Create(WizardForm); with Panel1 do begin Parent := WizardForm; Left := ScaleX(80); Top := ScaleY(20); Width := ScaleX(320); Height := ScaleY(40); BorderStyle := bsSingle; end; with WizardForm.DirEdit do begin Top := ScaleY(8); Left := ScaleX(5); Parent := Panel1; Width := ScaleX(285) Color := clMenu; BorderStyle := bsNone; Font.Name := 'Times New Roman'; Font.Height := -16; end; Reg := TLabel.Create(WizardForm); with Reg do begin Parent := WizardForm; Caption := 'Зарегистрированная русская версия '; Left := ScaleX(150); Top := ScaleY(65); Width := ScaleX(209); Height := ScaleY(13); end; DopSoft := TNewCheckBox.Create(WizardForm); with DopSoft do begin Parent := WizardForm; Left := ScaleX(150); Top := ScaleY(90); Width := ScaleX(129); Height := ScaleY(17); Caption := 'Microsoft Visual C++'; Checked:=True; end; with WizardForm.NextButton do begin Left := ScaleX(405); Top := ScaleY(20); Width := ScaleX(90); Height := ScaleY(40); Font.Name := 'Times New Roman'; end; with WizardForm.CancelButton do begin Left := ScaleX(405); Top := ScaleY(20); Width := ScaleX(90); Height := ScaleY(40); Font.Name := 'Times New Roman'; end; with WizardForm.ProgressGauge do begin Top := ScaleY(20); Left := ScaleX(80); Width := ScaleX(320); Height := ScaleY(40); Parent := WizardForm; end; with WizardForm.StatusLabel do begin Left := ScaleX(80); Top := ScaleY(70); Parent := WizardForm; end; end; procedure CurPageChanged(CurPageID: Integer); begin WizardForm.ProgressGauge.Hide; Panel1.Hide; Reg.Hide; DopSoft.Hide; WizardForm.StatusLabel.Hide; case CurPageID of wpSelectDir: begin Panel1.Show; Reg.Show; DopSoft.Show; end; wpInstalling: begin WizardForm.ProgressGauge.Show; WizardForm.StatusLabel.Show; end; end; end; |
Отправлено: 17:00, 15-11-2017 | #2269 |
Новый участник Сообщения: 19
|
Профиль | Отправить PM | Цитировать Может ли Inno Setup проверять наличие нужной папки перед установкой? и если ее нет, то завершать процесс установки.
|
Отправлено: 01:13, 18-11-2017 | #2270 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Скрипты 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 |
|