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

Компьютерный форум 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 | Цитировать


ы кавыки забыл
if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1') then MsgBox('ключ в реестре не удален', mbInformation, MB_OK);

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

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

Отправлено: 11:05, 16-05-2012 | #2031



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

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


Аватара для bugmenotagain

Старожил


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

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


Цитата R.i.m.s.k.y.:
ы кавыки забыл
if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1') then MsgBox('ключ в реестре не удален', mbInformation, MB_OK); »
реестр чистый, но

Отправлено: 11:11, 16-05-2012 | #2032


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

Ветеран


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

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


я бы делал вот так
Код: Выделить весь код
[*Code] 
procedure RD(Dir:string);
begin
  Exec('cmd.exe', ' /c rd /S /Q  ' + Add_Quotes(Dir),ExpandConstant('{sys}'), SW_Hide,ewWaitUntilTerminated,res);
  Exec('cmd.exe', ' /c rd /S /Q  ' + '"'+Dir+'"',ExpandConstant('{sys}'), SW_Hide,ewWaitUntilTerminated,res);
end;

procedure CurStepChanged(CurStep: TSetupStep); 
var   
ResultCode: Integer; 
begin  
if (CurStep = ssDone) then begin
  if (IsComponentSelected('port')) then begin
  RD(ExpandConstant('{app}\uninstall'));
  if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1')
  if RegKeyExists(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1')
  end; //if (IsComponentSelected('port'))
end; //if (CurStep = ssDone)
end;  //CurStepChanged
Цитата bugmenotagain:
реестр чистый, но »
а в остальном все хорошо?
Чтобы убрать отладочное сообщение удали строчки с MSGBox

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


Отправлено: 11:13, 16-05-2012 | #2033


Аватара для bugmenotagain

Старожил


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

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


Код: Выделить весь код
Exec('cmd.exe', ' /c rd /S /Q  ' + Add_Quotes(Dir),ExpandConstant('{sys}'), SW_Hide,ewWaitUntilTerminated,res);
ругается. кажется опять кавычки

перед Add_Quotes

Цитата R.i.m.s.k.y.:
*Code] procedure RD(Dir:string); begin Exec('cmd.exe', ' /c rd /S /Q ' + Add_Quotes(Dir),ExpandConstant('{sys}'), SW_Hide,ewWaitUntilTerminated,res); Exec('cmd.exe', ' /c rd /S /Q ' + '"'+Dir+'"',ExpandConstant('{sys}'), SW_Hide,ewWaitUntilTerminated,res); end; procedure CurStepChanged(CurStep: TSetupStep); var ResultCode: Integer; begin if (CurStep = ssDone) then begin if (IsComponentSelected('port')) then begin RD(ExpandConstant('{app}\uninstall')); if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1') if RegKeyExists(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1') end; //if (IsComponentSelected('port')) end; //if (CurStep = ssDone) end; //Cu »
этот код к чему?

Отправлено: 11:16, 16-05-2012 | #2034


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

Ветеран


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

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


bugmenotagain, ты либо используй мой вариант, либо не мой
Я привел вариант как бы сделал я. Ты сам то можешь прочитать чего накопировал? нет? думаешь мы должны?

RD рабочий из моего инсталла
я забыл добавить Add_Quotes, в башке компилятора то нет
Код: Выделить весь код
[*Code] 
function Add_Quotes(strng : String):String;
begin
  Result := '"' + strng + '"';
end;

procedure RD(Dir:string);
begin
  Exec('cmd.exe', ' /c rd /S /Q  ' + AddQuotes(Dir),ExpandConstant('{sys}'), SW_Hide,ewWaitUntilTerminated,res);
  Exec('cmd.exe', ' /c rd /S /Q  ' + '"'+Dir+'"',ExpandConstant('{sys}'), SW_Hide,ewWaitUntilTerminated,res);
end;

procedure CurStepChanged(CurStep: TSetupStep); 
var   
ResultCode: Integer; 
begin  
if (CurStep = ssDone) then begin
  if (IsComponentSelected('port')) then begin
  RD(ExpandConstant('{app}\uninstall'));
  if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1') then RegDeleteKeyIncludingSubkeys(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1')
  if RegKeyExists(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1') then RegDeleteKeyIncludingSubkeys(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1')
  end; //if (IsComponentSelected('port'))
end; //if (CurStep = ssDone)
end;  //CurStepChanged

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


Отправлено: 11:18, 16-05-2012 | #2035


Аватара для bugmenotagain

Старожил


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

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


R.i.m.s.k.y.,
Код: Выделить весь код
if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1')
 then;  
 end; //if (IsComponentSelected('port'))
что еще удалить?

Отправлено: 11:28, 16-05-2012 | #2036


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

Ветеран


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

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


bugmenotagain,
читать дальше »

Код: Выделить весь код
[*Code] 
procedure CurStepChanged(CurStep: TSetupStep); 
var   
ResultCode: Integer; 
begin  
if (CurStep = ssDone) then begin
  if (IsComponentSelected('port')) then begin
  Exec(ExpandConstant('{app}\uninstall\unins000.exe'), ' /VERYSILENT', ExpandConstant('{app}\uninstall'), SW_SHOW, ewNoWait, ResultCode);
//  MsgBox('папка с удалятором = '  + ExpandConstant('{app}\uninstall'), mbInformation, MB_OK);
//  if RegKeyExists(HKLM, SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1) then MsgBox('ключ в реестре не удален', mbInformation, MB_OK);
  end; //if (IsComponentSelected('port'))
end; //if (CurStep = ssDone)
end;  //CurStepChanged

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


Последний раз редактировалось volk1234, 20-05-2012 в 03:14. Причина: если уж правила нарушаете, так хоть под кат прятали бы что ли


Отправлено: 11:34, 16-05-2012 | #2037


Аватара для bugmenotagain

Старожил


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

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


точно. Я не программист, и код pascal для меня как китайский.

Код: Выделить весь код
procedure CurStepChanged(CurStep: TSetupStep);  
var   
 ResultCode: Integer; 
 begin   
if (CurStep = ssDone) then begin  
 if (IsComponentSelected('port')) then begin  
 Exec(ExpandConstant('{app}\uninstall\unins000.exe'), ' /VERYSILENT', ExpandConstant('{app}\uninstall'), SW_SHOW, ewNoWait, ResultCode); 
  if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{{60F3D1CB-B2A7-46E7-92B0-93526131061D}_is1')
 then;   
end; //if (IsComponentSelected('port'))
 end; //if (CurStep = ssDone)
 end;  //CurStepChanged
у меня так и все работает.

Отправлено: 11:40, 16-05-2012 | #2038


Аватара для bugmenotagain

Старожил


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

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


Цитата Johny777:
Совет
при выборе портативной кажется не разумно копировать её в Programm Files
лучше в "Мои документы" или на Рабочий стол (имею в виду делать путь установки таким в эдите пути на соответствующей странице) »
по умолчанию просится. думаю изменить папку не составит труда

скажите тут есть темы на другие установщики? inno setup , nsis слишком для программистов, чтоб делать удобные плюшки. а стандартные функции желают лучшего.
alert30
Цитата:
[qCode]
var Check: array [0..2] of TCheckBox;
procedure Check0(Sender: TObject);
begin
if Check[0].Checked then
begin Check[1].
Checked := False;
Check[2].Checked := False;
end;
if (Check[0].Checked = False)
and (Check[1].Checked = False)
and (Check[2].Checked = False) then Check[0].Checked := True; end;
procedure Check1(Sender: TObject);
begin
if Check[1].Checked then begin
Check[0].Checked := False;
Check[2].Checked := False;
end;
if (Check[0].Checked = False)
and (Check[1].Checked = False)
and (Check[2].Checked = False) then Check[1].Checked := True;
end;
procedure Check2(Sender: TObject);
begin if Check[2].Checked then
begin
Check[0].Checked := False;
Check[1].Checked := False;
end;
if (Check[0].Checked = False)
and (Check[1].Checked = False)
and (Check[2].Checked = False) then
Check[2].Checked := True;
end;
procedure InitializeWizard();
begin Check[0] := TCheckBox.Create(WizardForm);
with Check[0] do begin Parent := WizardForm.SelectDirPage;
Checked := True;
Top := ScaleY(100);
OnClick := @Check0;
Caption := 'Чекбокс №1';
end;
Check[1] := TCheckBox.Create(WizardForm);
with Check[1] do begin Parent := WizardForm.SelectDirPage;
Top := ScaleY(120); OnClick := @Check1;
Caption := 'Чекбокс №2'; end;
Check[2] := TCheckBox.Create(WizardForm);
with Check[2] do begin Parent := WizardForm.SelectDirPage;
Top := ScaleY(140); OnClick := @Check2;
Caption := 'Чекбокс №3'; end; end;

такой скрипт надо настрочить, чтобы сделать пару жалких чекбокса.

Последний раз редактировалось bugmenotagain, 16-05-2012 в 13:49.


Отправлено: 12:27, 16-05-2012 | #2039


Аватара для alert30

Ветеран


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

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


bugmenotagain, скрой код, слишком большой.

Отправлено: 12:38, 16-05-2012 | #2040



Компьютерный форум 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




 
Переход