|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 9] |
|
|
Скрипты Inno Setup. Помощь и советы [часть 9]
|
|
Ветеран Сообщения: 1274 |
Внимание! Данная тема предназначена только для обсуждения написания скриптов!
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Показать/скрыть: Справка, руководство, примеры:
Показать/скрыть: Ссылки на примеры скриптов:
Показать/скрыть: Дополнительные программы для Inno Setup:
Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Скрипты Inno Setup. Помощь и советы [часть 6] | Скрипты Inno Setup. Помощь и советы [часть 6].7z Скрипты Inno Setup. Помощь и советы [часть 7] | Скрипты Inno Setup. Помощь и советы [часть 7].7z Скрипты Inno Setup. Помощь и советы [часть 8] | Скрипты Inno Setup. Помощь и советы [часть 8].7z |
|
|
Отправлено: 16:09, 04-04-2018 |
|
Старожил Сообщения: 440
|
Профиль | Сайт | Отправить PM | Цитировать niksan29,
Необходимо чтобы инсталлер, после хотя бы одной установки, в дальнейшем предлагал установку в тот же каталог, что, и ранее, подскажите как это можно организовать
|
|
------- Отправлено: 11:26, 04-11-2019 | #381 |
|
Alien Сообщения: 4262
|
Профиль | Отправить PM | Цитировать Цитата niksan29:
Все, что я вам порекомендую сделать, это включить постоянное отображение страницы выбора папки назначения: - по умолчанию значение 'auto' - страница отключается при повторной установке приложения. |
|
|
Отправлено: 16:42, 04-11-2019 | #382 |
|
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать nik1967, как сказал товарищ
boss911, inno путь по умолчанию,вроде как и так запоминает, позвольте узнать,в чем отличие кода который привели Вы? И ещё вопрос, а если перед установкой новой версии(того что ставим инсталлером, созданным с помощью inno), старую удаляем, то Inno в таком случае будет помнить путь, или нет? И, спасибо за быстрые ответы ![]() |
|
Последний раз редактировалось niksan29, 05-11-2019 в 08:33. Отправлено: 08:19, 05-11-2019 | #383 |
|
Alien Сообщения: 4262
|
Профиль | Отправить PM | Цитировать Цитата niksan29:
Цитата niksan29:
|
||
|
Отправлено: 10:09, 05-11-2019 | #384 |
|
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать Цитата boss911:
По сути как раз, это самая важная задача: это чтобы этого не происходило, т.к перед установкой обновления, обязательно надо удалять старую версию... А т.к обновления будут выходить досточно часто, то каждый раз выбирать каталог установки по новой будет не совсем удобно, тем более инсталлеров при обновлении будет около 5-7 разово(данные разбиты по регионам, каждый устанавливает необходимые по одному, или же по очереди все). |
|
|
Отправлено: 13:01, 05-11-2019 | #385 |
|
Alien Сообщения: 4262
|
Профиль | Отправить PM | Цитировать Цитата niksan29:
|
|
|
Отправлено: 00:05, 06-11-2019 | #386 |
|
Новый участник Сообщения: 44
|
Профиль | Отправить PM | Цитировать База данных для ПО, отдельные инсталляционные пакеты около 7(число может меняться) штук , количество необходимых пакетов выбирает пользователь(исходя из его требований/желаний), может быть и 1 из 7 а может и все 7...
Уделяется старые версии с той целью, чтобы каталог очищался и не было конфликтов после установки новой версии , т.к некоторые файлы просто могут отсутствовать в новой версии, соответственно если перед обновлением не почистить каталог, то они(старые старые файлы, которых теперь в обновление нет) останутся и будут мешать... Обновление может ставиться в любой каталог и уже потом, в самом ПО указывается путь до базы и сохраняется... |
|
Последний раз редактировалось niksan29, 06-11-2019 в 12:03. Отправлено: 11:11, 06-11-2019 | #387 |
|
Alien Сообщения: 4262
|
Профиль | Отправить PM | Цитировать niksan29
На всякий случай уточню, вам нужно, чтобы при установке очередного обновления (отдельный инсталляционный пакет), путь для установки был аналогичен тому, куда было установлено предыдущее обновление, при этом, каталог назначения должен быть очищен перед установкой нового обновления? Тогда пропишите в скрипте обновления следующие: Таким образом, каждое новое обновление можете ставить поверх предыдущего, то есть без предварительной деинсталляции предыдущего, оно сначала удалит в каталоге назначения указанную папку со всем содержимым, только потом начнется установка/распаковка. Например, для установки обновления указан путь "%ProgramFiles%\My Program", тогда оно сначала удалит "%ProgramFiles%\My Program\Base" со всем содержимым, потом начнет устанавливать. Предупреждаю (!), никогда не указывайте для удаления каталог "{app}", так как при не правильных действиях пользователя, может произойти не поправимое, всегда указывайте конкретную конечную папку/файл для удаления, чем уникальней имя, тем лучше. |
|
Отправлено: 18:24, 06-11-2019 | #388 |
|
Ветеран Сообщения: 862
|
Профиль | Отправить PM | Цитировать Доброе время суток. Может будет у кого нибудь желание и время переделать скрипт сделанный под IS Ultra под стандартную версию IS v6.x
https://drive.google.com/file/d/1OJG...ew?usp=sharing Просто хочу перейти на стандартную версию, а чтобы довести до рабочего состояния ума не хватает |
|
------- Последний раз редактировалось habib2302, 07-11-2019 в 12:39. Отправлено: 12:32, 07-11-2019 | #389 |
|
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата habib2302:
Скрытый текст
#define AppName "HxD Hex Editor"
#define AppVersion "2.3"
[Setup]
AppName={#AppName}
AppVerName={#AppName} {#AppVersion}
AppId=HxD
AppVersion={#AppVersion}
AppCopyright=Xabib © 2019
AppPublisher=Mael Horz
AppPublisherURL=https://mh-nexus.de/
AppSupportURL=https://mh-nexus.de/hxd/
AppUpdatesURL=https://mh-nexus.de/hxd/
AllowNoIcons=yes
DefaultDirName={code:GetDefaultDirName}\HxD
DefaultGroupName={#AppName}
DisableWelcomePage=yes
DisableReadyPage=yes
DisableFinishedPage=yes
DirExistsWarning=no
PrivilegesRequiredOverridesAllowed=dialog
SetupIconFile=Install.ico
UninstallDisplayIcon={code:GetMainExeFileName}
UninstallDisplayName={#AppName} {#AppVersion}
OutputBaseFilename={#AppName} {#AppVersion} RePack (& Portable) by Xabib
VersionInfoDescription={#AppName} RePack by Xabib
VersionInfoVersion={#AppVersion}
Compression=lzma2/ultra64
SolidCompression=true
InternalCompressLevel=ultra64
LZMADictionarySize=65536
LZMAMatchFinder=BT
LZMANumFastBytes=273
ArchitecturesInstallIn64BitMode=x64
Uninstallable=not IsInPortableMode
WizardSmallImageFile=WizardSmallImage0.bmp
[Languages]
Name: enu; MessagesFile: compiler:default.isl
Name: rus; MessagesFile: compiler:Languages\russian.isl
[Messages]
BeveledLabel=RePack by Xabib
SelectLanguageTitle={#AppName}
[CustomMessages]
enu.CreateConfigShowOptions=Show options window (when finishing install)
enu.CreateDefaultConfig=Create default configuration
enu.ForbiddenDirMessage=In portable mode, %1 should not be installed in "Program Files" or similar system directories.
enu.InstallModePageCaption=Pick Installation Mode
enu.InstallModePageDescription=Do you prefer integration into Windows or a portable installation?
enu.InstallModePageNormalOption=Normal - Integrates into Windows
enu.InstallModePagePortableOption=Portable - Supports removeable drives (e.g., USB pen drives)
enu.InstallModePageSubCaption=Choose a normal installation that integrates into Windows (e.g., Startmenu, optional Explorer context menu), or a portable installation that can run on any compatible Windows machine.
enu.LanguageFilesComponent=Languages
enu.OpenInstallFolderAfterInstall=Open installation target folder
enu.ProgramFilesComponent=Program Files
enu.StatusRunHxDToCreateConfigFile=Create configuration file...
enu.TaskConfigurationFile=Configuration file:
enu.WriteProtectConfig=Make readonly
enu.PortableButtonInstall=&Unpack
rus.CreateConfigShowOptions=Показать окно параметров (после завершения установки)
rus.CreateDefaultConfig=Создать конфигурацию по умолчанию
rus.ForbiddenDirMessage=В портативном режиме %1 не следует устанавливать в «Program Files» или аналогичных системных каталогах.
rus.InstallModePageCaption=Выберите тип установки
rus.InstallModePageDescription=Предпочитаете интеграцию в Windows или портативную версию?
rus.InstallModePageNormalOption=Нормальная - интеграция в Windows
rus.InstallModePagePortableOption=Портативная - поддерживает переносимые устройства (USB/HDD)
rus.InstallModePageSubCaption=Выберите нормальный тип для установки программы в Windows (добавление в меню Пуск, опционально в контекстное меню) или портативную для работы программы на любом ПК, совместимым с Windows
rus.LanguageFilesComponent=Языки
rus.OpenInstallFolderAfterInstall=Открыть папку установки
rus.ProgramFilesComponent=Program Files
rus.StatusRunHxDToCreateConfigFile=Создать файл конфигурации...
rus.TaskConfigurationFile=Файл конфигурации:
rus.WriteProtectConfig=Сделать доступным только для чтения
rus.PortableButtonInstall=&Распаковать
[Files]
Source: {app}\HxD32_enu.exe; DestDir: {app}; DestName: HxD.exe; Languages: enu; Flags: replacesameversion; Check: not IsInPortableMode and not IsWin64
Source: {app}\HxD32_enu.exe; DestDir: {app}; DestName: HxD32.exe; Languages: enu; Flags: replacesameversion; Check: IsInPortableMode
Source: {app}\HxD64_enu.exe; DestDir: {app}; DestName: HxD.exe; Languages: enu; Flags: replacesameversion; Check: not IsInPortableMode and IsWin64
Source: {app}\HxD64_enu.exe; DestDir: {app}; DestName: HxD64.exe; Languages: enu; Flags: replacesameversion; Check: IsInPortableMode and IsWin64
Source: {app}\HxD32_rus.exe; DestDir: {app}; DestName: HxD.exe; Languages: rus; Flags: replacesameversion; Check: not IsInPortableMode and not IsWin64
Source: {app}\HxD32_rus.exe; DestDir: {app}; DestName: HxD32.exe; Languages: rus; Flags: replacesameversion; Check: IsInPortableMode
Source: {app}\HxD64_rus.exe; DestDir: {app}; DestName: HxD.exe; Languages: rus; Flags: replacesameversion; Check: not IsInPortableMode and IsWin64
Source: {app}\HxD64_rus.exe; DestDir: {app}; DestName: HxD64.exe; Languages: rus; Flags: replacesameversion; Check: IsInPortableMode and IsWin64
[Registry]
Root: HKCR32; Subkey: *\shell\HxD; Flags: uninsdeletekey dontcreatekey
Root: HKCR32; Subkey: *\shell\HxDReadonly; Flags: uninsdeletekey dontcreatekey
Root: HKCR64; Subkey: *\shell\HxD; Check: IsWin64; Flags: uninsdeletekey dontcreatekey
Root: HKCR64; Subkey: *\shell\HxDReadonly; Check: IsWin64; Flags: uninsdeletekey dontcreatekey
[Run]
Filename: {code:GetMainExeFileName}; Parameters: {code:GetHxDConfigParams}; StatusMsg: {cm:StatusRunHxDToCreateConfigFile}; Check: IsInPortableMode
Filename: {code:GetMainExeFileName}; Description: {cm:LaunchProgram,{#AppName}}; Flags: postinstall skipifsilent nowait; Check: not IsInPortableMode
Filename: {app}; Description: {cm:OpenInstallFolderAfterInstall}; Flags: shellexec postinstall skipifsilent nowait; Check: IsInPortableMode
[Icons]
Name: {group}\HxD; Filename: {code:GetMainExeFileName}; Check: not IsInPortableMode
Name: {autoappdata}\Microsoft\Internet Explorer\Quick Launch\HxD; Filename: {code:GetMainExeFileName}; Tasks: quicklaunchicon; Check: not IsInPortableMode
Name: {autodesktop}\HxD; Filename: {code:GetMainExeFileName}; Tasks: desktopicon; Check: not IsInPortableMode
[Tasks]
Name: createdefaultconfig; Description: {cm:CreateDefaultConfig}; GroupDescription: {cm:TaskConfigurationFile}; Flags: exclusive; Check: IsInPortableMode
Name: createconfigshowoptions; Description: {cm:CreateConfigShowOptions}; GroupDescription: {cm:TaskConfigurationFile}; Flags: exclusive unchecked; Check: IsInPortableMode
Name: makeconfigreadonly; Description: {cm:WriteProtectConfig}; GroupDescription: {cm:TaskConfigurationFile}; Flags: unchecked; Check: IsInPortableMode
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Check: not IsInPortableMode
Name: quicklaunchicon; Description: {cm:CreateQuickLaunchIcon}; GroupDescription: {cm:AdditionalIcons}; Check: not IsInPortableMode
[Code]
var
InputOptionPage: TInputOptionWizardPage;
function IsInPortableMode: Boolean;
begin
Result := InputOptionPage.Values[1];
end;
function GetDefaultDirName(const AParam: string): string;
begin
if ExpandConstant('{param:portable|0}') = '1' then
Result := ExpandConstant('{userdesktop}') else
Result := ExpandConstant('{autopf}');
end;
function GetMainExeFileName(const AParam: string): string;
begin
if not IsInPortableMode then
Result := ExpandConstant('{app}\HxD.exe')
else if not IsWin64 then
Result := ExpandConstant('{app}\HxD32.exe')
else
Result := ExpandConstant('{app}\HxD64.exe');
end;
function GetHxDConfigParams(const AParam: string): string;
begin
Result := '/chooselang:' + ActiveLanguage;
if IsTaskSelected('createdefaultconfig') then
begin
Result := Result + ' /createdefaultconfig:';
if IsTaskSelected('makeconfigreadonly') then
Result := Result + 'readonly' else
Result := Result + 'normal';
end else
if IsTaskSelected('createconfigshowoptions') then
begin
Result := Result + ' /createconfig:';
if IsTaskSelected('makeconfigreadonly') then
Result := Result + 'readonly' else
Result := Result + 'normal';
end;
end;
function IsForbiddenDir(const ADir: string): Boolean;
begin
Result := IsAdminInstallMode and
((not IsWin64 and (Pos(ExpandConstant('{win}'), ADir) = 1)) or
(not IsWin64 and (Pos(ExpandConstant('{commonpf32}'), ADir) = 1)) or
(IsWin64 and (Pos(ExpandConstant('{commonpf64}'), ADir) = 1)));
end;
procedure InstallModeListBoxClick(Sender: TObject);
begin
if IsInPortableMode and (CompareText(WizardDirValue, ExpandConstant('{autopf}\HxD')) = 0) then
WizardForm.DirEdit.Text := ExpandConstant('{userdesktop}\HxD')
else if not IsInPortableMode and (CompareText(WizardDirValue, ExpandConstant('{userdesktop}\HxD')) = 0) then
WizardForm.DirEdit.Text := ExpandConstant('{autopf}\HxD');
end;
procedure CreateInstallModePage;
begin
InputOptionPage := CreateInputOptionPage(wpWelcome, ExpandConstant('{cm:InstallModePageCaption}'),
ExpandConstant('{cm:InstallModePageDescription}'), ExpandConstant('{cm:InstallModePageSubCaption}'), True, False);
InputOptionPage.Add(ExpandConstant('{cm:InstallModePageNormalOption}'));
InputOptionPage.Add(ExpandConstant('{cm:InstallModePagePortableOption}'));
InputOptionPage.Values[1] := ExpandConstant('{param:portable|0}') = '1';
InputOptionPage.Values[0] := not InputOptionPage.Values[1];
InputOptionPage.CheckListBox.OnClickCheck := @InstallModeListBoxClick;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpSelectTasks:
begin
if not IsInPortableMode then
WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall) else
WizardForm.NextButton.Caption := ExpandConstant('{cm:PortableButtonInstall}');
end;
end;
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result := True;
case CurPageId of
wpSelectDir:
if IsInPortableMode then
begin
Result := not IsForbiddenDir(WizardDirValue);
if not Result then
MsgBox(ExpandConstant('{cm:ForbiddenDirMessage,{#AppName}}'), mbError, MB_OK);
end;
end;
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
Result := False;
case PageID of
wpSelectProgramGroup:
Result := IsInPortableMode;
end;
end;
procedure InitializeWizard;
begin
CreateInstallModePage;
end;
|
|
|
Отправлено: 15:01, 10-11-2019 | #390 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Скрипты 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 | |
|