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

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

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

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

Ветеран


Contributor


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


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

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


Изменения
Автор: El Sanchez
Дата: 16-02-2015
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме
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] - Скачать;


Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах:

Отправлено: 19:06, 28-03-2013

 

Пользователь


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

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


nik1967, возможно у Вас личка переполнена, Вы видели мое сообщение?

_____________________________

Вопрос знающим: как прописать для файла *.exe старт при загрузке системы?

Отправлено: 18:27, 29-11-2013 | #1561



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

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


SHVtYW4=


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

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


Цитата Mat_y:
как прописать для файла *.exe старт при загрузке системы? »
Для текущего пользователя
Код: Выделить весь код
[Registry]
Root: HKCU; SubKey: Software\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: My Program; ValueData: {app}\MyProg.exe; Flags: uninsdeletevalue uninsdeletekeyifempty

Для всех пользователей
Код: Выделить весь код
[Registry]
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: My Program; ValueData: {app}\MyProg.exe; Flags: uninsdeletevalue uninsdeletekeyifempty
Пример:
Код: Выделить весь код
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputBaseFilename=setup

[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked

[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion

[Icons]
Name: {group}\My Program; Filename: {app}\MyProg.exe
Name: {commondesktop}\My Program; Filename: {app}\MyProg.exe; Tasks: desktopicon

[Run]
Filename: {app}\MyProg.exe; Description: {cm:LaunchProgram,My Program}; Flags: nowait postinstall skipifsilent

[Registry]
Root: HKLM; SubKey: SOFTWARE\Microsoft\Windows\CurrentVersion\Run; ValueType: string; ValueName: My Program; ValueData: {app}\MyProg.exe; Flags: uninsdeletevalue uninsdeletekeyifempty

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.

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

Отправлено: 19:04, 29-11-2013 | #1562


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


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

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


Подскажите ещё, надо сделать так, чтобы инсталлятор сканировал выбранную папку на нужный файл и если он есть, то разрешал установку дальше, а если нет, то не разрешал и надо выбрать папку где есть.

Отправлено: 19:09, 29-11-2013 | #1563


Пользователь


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

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


Dimon585h, есть один старый пример проверки файла по md5 и путь тут берется из реестра. если файл не найден,то нужно указать его. Думаю в твоем случае это нужно.
читать дальше »
Код: Выделить весь код
#define Key "HKLM\SOFTWARE\7-Zip" 
#define Subkey "Path" 
#define Filename "7zFM.exe" 
#define MD5 "6c14c21147452b73ddd51a1af9be0a87" 
 
[Setup] 
AppName=MyApp 
AppVerName=MyApp 
DefaultDirname={pf}\MyApp 
 
[CustomMessages] 
DirBrowseMessage=Пожалуйста, укажите расположение программы MyApp 
 
[code ] 
var 
Root: Integer; DestDir, Key, Subkey: String; 
 
function GetRegPath(): String; 
var str1, str2: string; 
begin 
str1:=Copy('{#Key}', 1, Pos('\', '{#Key}')-1); 
case AnsiUppercase(str1) of 
  'HKLM': Root:= HKLM; 'HKCU': Root:= HKCU; 
  'HKCR': Root:= HKCR; 'HKU':  Root:= HKU; 
  'HKCC': Root:= HKCC; 
end; 
Key:=Copy('{#Key}', Pos('\', '{#Key}')+1, Length('{#Key}')); 
Subkey:='{#Subkey}'; Result:=''; 
If RegQueryStringValue(Root, Key, Subkey, str2) then 
  if str2<>'' then Result:=str2 
end; 
 
Function CheckPath(Path, Filename, MD5: String): Boolean; 
begin 
Result:= False; 
If FileExists(AddBackslash(Path)+Filename) then 
  if AnsiUpperCase(GetMD5OfFile(AddBackslash(Path)+Filename))=AnsiUppercase(MD5) then Result:=True; 
end; 
 
Function GetPath(): Boolean; 
var Check, Cancel: Boolean; 
begin 
DestDir:=GetRegPath(); Check:=CheckPath(DestDir, '{#Filename}', '{#MD5}'); 
if Check = False then 
begin 
  repeat 
  Cancel:=BrowseForFolder(ExpandConstant('{cm:DirBrowseMessage}'), DestDir, False); 
  Check:=CheckPath(DestDir, '{#Filename}', '{#MD5}'); 
  until (not(Check=False))or(not Cancel); 
end; 
if (Check = True) then Result:=Check else Result:= Cancel; 
end; 
 
Function InitializeSetup(): Boolean; 
begin 
Result:= GetPath;
end; 
 
procedure InitializeWizard(); 
begin 
WizardForm.DirEdit.Text:= DestDir; 
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:03, 29-11-2013 | #1564


SHVtYW4=


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

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


sergey3695, Это перебор.

Цитата Dimon585h:
надо сделать так, чтобы инсталлятор сканировал выбранную папку на нужный файл и если он есть, то разрешал установку дальше, а если нет, то не разрешал и надо выбрать папку где есть. »
Эх, кто ищет - тот найдёт. Лишь бы желание только было.

Код: Выделить весь код
[Code]
function NextButtonClick(CurPageID: Integer): Boolean;
begin
    Result := True;
    case CurPageID of
        wpSelectDir:
        begin
            Result := FileExists(ExpandConstant('{app}\MyProg.exe'));
            if not Result then MsgBoxEx(WizardForm.Handle, 'Ошибка! Приложение' + #32 + ExpandConstant('{#SetupSetting("AppName")}') + #32 + 'не найдено на данном компьютере', 'Ошибка', MB_OK or MB_ICONWARNING, 0, 0);
        end;
    end;
end;
Dimon585h, И удали посты #1551 и #1561, ни к чему плодить близнецов.

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.

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

Отправлено: 20:16, 29-11-2013 | #1565


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


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

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


Так че поможет кто или нет?

Отправлено: 21:35, 29-11-2013 | #1566


Пользователь


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

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


Цитата Nordek:
Для текущего пользователя »
Спс. Именно такой способ я и искал.
А есть ли способ заставить программу автоматом закрываться при завершении работы Windows? Просто программа записывает данные в конфиг при выходе, а при жестком завершении работы (убийство процесса) не записывает в конфиг изменения.

Отправлено: 22:40, 29-11-2013 | #1567


SHVtYW4=


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

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


Вот смотрю я, и удивляюсь. Писать по несколько одинаковых постов с просьбой, пальцы не устают. А нажать у пальчика силы иссякли?

Dimon585h, dima.dmitrienko.71@fb - А Johny777, а saurn-а, чего не поблагодарили? Не вижу! Подумайте, как долго бы вы ждали ответа на свой вопрос. Посты: #662, #933, #1324.
И иногда полезно читать справочку на форуме.

-------
09a468a9b4293cd82adf6d6c60a9da82 | Tm9yZGVr
В связи со сменой железа и переходом на LInux с полным отказом от Windows - посещение на форуме будет редким.

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

Отправлено: 09:18, 30-11-2013 | #1568


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


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

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


Жалко что на мой вопрос нет ответа!

Отправлено: 12:48, 30-11-2013 | #1569


Аватара для Mailchik

Пользователь


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

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


tuz-veta, скройте MessageBox
читать дальше »
Код: Выделить весь код
[Code]
#ifdef UNICODE
  type
  PChar = PAnsiChar;
#endif

const
  BM_CLICK = $00F5;

function FindWindowEx(Parent, Child: Longint; ClassName, WindowName: PChar): Longint;
  external 'FindWindowExA@user32.dll stdcall';

var
  tmr: TTimer;

procedure Timer(Sender: TObject);
var
  hWnd: Longint;
begin
  hWnd := FindWindowByWindowName(SetupMessage(msgNoUninstallWarningTitle));
  if hWnd > 0 then
    PostMessage(FindWindowEx(hWnd, 0, 'Button', PChar(SetupMessage(msgButtonYes))), BM_CLICK, 0, 0);
end;

procedure InitializeWizard;
begin
  tmr := TTimer.Create(WizardForm);
  with tmr do begin
    Enabled := False;
    Interval := 5;
    OnTimer := @Timer;
 end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  tmr.Enabled := CurPageID = wpSelectComponents;
end;
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:28, 30-11-2013 | #1570



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Скрипты 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
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] Serega Автоматическая установка приложений 2651 08-11-2010 18:34
Скрипты Inno Setup Compiler QAZAK Автоматическая установка приложений 7 15-01-2007 17:59




 
Переход