Скрипты Inno Setup. Помощь и советы [часть 9]

Ответить
 • Просмотры: 26
Аватара пользователя
Nordek

Re: Скрипты Inno Setup. Помощь и советы [часть 9]

Сообщение Nordek »

Beavimo, Смотрите прикреплённый файл.
Аватара пользователя
Beavimo

Re: Скрипты Inno Setup. Помощь и советы [часть 9]

Сообщение Beavimo »

Выручайте, башка кипит! Изображение Как решить не пойму, примеров найти не могу? Некая программа работает на Виндовс 7 некорректно. Опытным путем Изображение, после установки обновления KB2533623, программа начала работать как надо. Так вот в момент установки моего приложения, надо проверить установлено ли обновление KB2533623 в системе, или нет. Если установлено то просто установить приложение, в противном случае, спросить у пользователя, мол Изображение хотите установить или нет? Как проверить наличие KB2533623 за что цеплятся? Короч насочинял чот но как быть с 32-бит системой, как запустить само обновление при нажатии "да" непойму.

Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

[Setup]
AppName=TEST 
AppVerName=TEST 
OutputDir=userdocs:..\Desktop
CreateAppDir=no
Uninstallable=no
[.Code]
function WindowsVersion(Major, Minor: Integer): Boolean; var
    Version: TWindowsVersion;
  begin
    GetWindowsVersionEx(Version);
    Result:=(Version.Major = Major);
    Result:=(Version.Minor = Minor);
end;
function WindowsRevVersion: Boolean;
  begin
    Result:=WindowsVersion(6,1);// Далее код будет выполнятся, только если установлена система (6.1)
end;
function InitializeSetup: Boolean;  var
    FileName: String;
  begin
      if not WindowsRevVersion then
    Result:=True
  else begin 
    FileName:=ExpandConstant('C:\Windows\SoftwareDistribution\Download\873dafaddab7475a4078c7fc97bc8cba\Windows6.1-KB2533623-x64.cab')// Проверка наличия файла по пути прописаном в реестре
      if FileExists(FileName) then 
    Result:=True
  else
      if MsgBox('Для полноценной работы приложения TEST:'#13'Нужно установить обновление KB2533623:'#13'Хотите установить обновление KB2533623 ?', mbInformation, MB_YESNO)=IDNO then   
       Result:=True
  else 
// Как здесь запустить файл "Windows6.1-KB2533623-x64.msu"??? 
end
end;   
[Files]
Source: "C:\Windows6.1-KB2533623-x64.msu"; DestDir: "{tmp}"; Flags: deleteafterinstall;


шуршу страницы в поисках истины, реально прогрес бар, ботва... короче дети засрали все со своими репаками

ПОМОГИТЕ
Аватара пользователя
Beavimo

Re: Скрипты Inno Setup. Помощь и советы [часть 9]

Сообщение Beavimo »

TheLeon, поле тип установки и так находится на 0 отметке WizardForm.TypesCombo.Top := ScaleY(0).
Цитата TheLeon:



не хочет устанавливать дополнения в program files и подобные директории.
Скрипты Inno Setup. Помощь и советы [часть 9]




в параметре DefaultDirName у вас указанно C:\Program Files (x86)\Spintires когда вместо C:\Program Files (x86) должна быть указана константа {pf} (подробнее читайте
справку
). Для наилучшего сжатия инсталлятора



замените

[spoiler]Compression=zip/9

InternalCompressLevel=ultra

CompressionThreads=2

SolidCompression=True[/spoiler]






на

[spoiler]Compression=lzma2/Ultra64

SolidCompression=true

InternalCompressLevel=Ultra64

LZMADictionarySize=65536

LZMAMatchFinder=BT

LZMANumFastBytes=273

MergeDuplicateFiles=yes[/spoiler]
Аватара пользователя
Gnom_aka_Lexander

Re: Скрипты Inno Setup. Помощь и советы [часть 9]

Сообщение Gnom_aka_Lexander »

Старинный проект. Пришлось немного переписать, на win10 работать не хотел.

Поиск и закрытие определенного процесса. В теории, при запуске от имени админа, убивает даже системные процессы, поэтому использовать с осторожностью, имя процесса указывать максимально точно.
Вложения
Вложение IsProc2.zip больше недоступно
Вложения
IsProc2.zip
(25.33 КБ) 0 скачиваний
IsProc2.zip
(25.33 КБ) 0 скачиваний
Аватара пользователя
Beavimo

Re: Скрипты Inno Setup. Помощь и советы [часть 9]

Сообщение Beavimo »

Nordek, Я видел "532" пост, когда искал решение "удаление перед установкой" несколько раз.

Не понимая заданного вопроса "TROY Diamond" (Мне нужно, чтобы мой установщик при запуске находил уже ранее установленное приложение, НЕ только моим, НО и другими установщиками) - просто проходил мимо.

Теперь понял, спасибо за наводку Изображение

Но мне не то нужно, может есть возможность выполнить батник, или же конслольные команды после нажатия на финиш инсталлятора?

Банально мне нужно чтобы мой инсталятор само уничтожался после выполнения, как это делает unins000.exe...
Аватара пользователя
Gnom_aka_Lexander

Re: Скрипты Inno Setup. Помощь и советы [часть 9]

Сообщение Gnom_aka_Lexander »

Цитата TheLeon:



2. Как через bat открыть файл(.txt) и в конце дописать строчки(если они отсутствуют, если же нет, то ничего не делать):
Скрипты Inno Setup. Помощь и советы [часть 9]





Цитата TheLeon:



от имени администратора
Скрипты Inno Setup. Помощь и советы [часть 9]




вам
сюда



Цитата TheLeon:



1. Как сделать так, чтобы после установки запускался bat файл(в зависимости оттого какой ты компонент выбрал), скрытая установка(не высвечивалась командная строка)?
Скрипты Inno Setup. Помощь и советы [часть 9]




Если у вас не запускается батник добавьте

Flags: ShellExec;

для скрытой установки добавьте

Flags: RunHidden;

в зависимости от выбранного компонента добавьте

Components: имя компонента; к нужным строкам из раздела run. если вам нужно добавить несколько компонентов к одной строке, то добавляйте имя компонента через пробел Components: AFP\INSTALL\AX AFP\INSTALL\ALL;
Аватара пользователя
passstrada

Re: Скрипты Inno Setup. Помощь и советы [часть 9]

Сообщение passstrada »

Цитата habib2302:



вам сюда
Скрипты Inno Setup. Помощь и советы [часть 9]




С чего бы это туда. Встроенный язык InnoSetup — это, как раз-таки, здесь. Никакие «bat'ы» здесь не нужны.



Я и это:
CMD/BAT - [решено] Замена строк в файле формата .xml
предлагал, чтобы сделали здесь же на том же самом встроенном Паскале.
Аватара пользователя
Log 101

Re: Скрипты Inno Setup. Помощь и советы [часть 9]

Сообщение Log 101 »

Цитата Iska:



Я и это: [решено] Замена строк в файле формата .xml предлагал, чтобы сделали здесь же на том же самом встроенном Паскале.
Скрипты Inno Setup. Помощь и советы [часть 9]




Iska, да легко:



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

[Code]
/////////////////////////////////////////////////
procedure VehiclesConfig(const FileName: string);
var
  XMLDoc, XMLNodes, XMLNode: Variant;
  XPath: string;
begin
  try
    XMLDoc := CreateOleObject('Msxml2.DOMDocument');
    XMLDoc.setProperty('SelectionLanguage', 'XPath');
    XMLDoc.async := False;
    XMLDoc.load(FileName);
    if XMLDoc.parseError.errorCode  0 then
      RaiseException(string(XMLDoc.parseError.reason));
    XMLNode := XMLDoc.createElement('MediaPath');
    XMLNode.setAttribute('Path', 'Vehicles');
    XPath := '/Config/MediaPath[@Path="Media" and not(following-sibling::*[1][self::MediaPath[@Path="Vehicles"]])]/following-sibling::*[1]';
  #if (Ver < 0x5050600) ; avoid VarIsNull
    XMLNodes := XMLDoc.selectNodes(XPath);
    if XMLNodes.length = 1 then
      XMLDoc.documentElement.insertBefore(XMLNode, XMLNodes.item(0));
  #else
    XMLNodes := XMLDoc.selectSingleNode(XPath);
    if not VarIsClear(XMLNodes) then
      XMLDoc.documentElement.insertBefore(XMLNode, XMLNodes);
  #endif
    XMLDoc.save(FileName);
  except
    ShowExceptionMessage;
  finally
  end;
end;
///////////////////////////
procedure InitializeWizard;
begin
  VehiclesConfig('{#SourcePath}\example.xml');
end;
Аватара пользователя
passstrada

Re: Скрипты Inno Setup. Помощь и советы [часть 9]

Сообщение passstrada »

Здраствуйте. Помогите пож. объединить два кода.



К инсталятору добавил код фонового изображения используя isgsg.dll:



Скрытый текст

[spoiler][Setup]

SourceDir=.

OutputDir=Setup

AppName=My Program

AppVerName=1.0

AppVersion=1.0

DefaultDirName={pf}\My Program

DefaultGroupName=My Program

DisableWelcomePage=false

DisableDirPage=false

DisableProgramGroupPage=false



[Languages]

Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"



[Files]

Source: "Fon.jpg"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression

Source: "isgsg.dll"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression

Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs createallsubdirs;



[UninstallDelete]

Type: filesandordirs; Name: "{app}"



[_Code]

function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall delayload';

function ssInitialize(hParent:HWND;ssTimeShow:integer;FadeOut:boolean;StretchMode:integer;BkgColor:DWORD):boo lean; external 'ssInitialize@files:isgsg.dll stdcall delayload';

procedure ssDeInitialize; external 'ssDeInitialize@files:isgsg.dll stdcall delayload';

procedure ssSetBkgImage(FileName:PChar); external 'ssSetBkgImage@files:isgsg.dll stdcall delayload';



procedure InitializeWizard;

begin

ssInitialize(GetWindowLong(MainForm.Handle,-8),0,False,1,$FF000000);

ExtractTemporaryFile('Fon.jpg');

ssSetBkgImage(ExpandConstant('{tmp}')+'\Fon.jpg');

end;



procedure DeinitializeSetup;

begin

ssDeInitialize;

end;[/spoiler]




На странице InstallingPage прописал код минимизации окна:



Скрытый текст

[spoiler][_Code]

var

ResizeButton: TButton;

PageResized, Show: Boolean;



function GetSystemMetrics(nIndex:Integer):integer;

external 'GetSystemMetrics@user32.dll stdcall delayload';

function GetSystemMenu(hWnd: HWND; bRevert: BOOL): LongWord;

external 'GetSystemMenu@user32.dll stdcall';

function DeleteMenu(hMenu: LongWord; uPosition, uFlags: UINT): BOOL;

external 'DeleteMenu@user32.dll stdcall';



procedure MinimizeInstallPage();

begin

WizardForm.MainPanel.Hide;

WizardForm.Bevel1.Hide;

WizardForm.Width:= ScaleX(395);

WizardForm.Height:= ScaleY(142);

WizardForm.Left:= GetSystemMetrics(16)-ScaleX(420);

WizardForm.Top:= GetSystemMetrics(17)-ScaleX(150);

WizardForm.InnerNotebook.Left:= ScaleX(10);

WizardForm.InnerNotebook.Top:= ScaleY(10);

WizardForm.InnerNotebook.Width:= ScaleX(370);

WizardForm.StatusLabel.Left:= ScaleX(0);

WizardForm.StatusLabel.Top:= ScaleY(0);

WizardForm.StatusLabel.Width:=WizardForm.InnerNotebook.Width;

WizardForm.FileNameLabel.Left:= ScaleX(0);

WizardForm.FileNameLabel.Top:= ScaleY(20);

WizardForm.FileNameLabel.Width:= WizardForm.InnerNotebook.Width;

WizardForm.ProgressGauge.Top:= ScaleY(40);

WizardForm.ProgressGauge.Width:= WizardForm.InnerNotebook.Width;

WizardForm.CancelButton.Left:= ScaleX(220);

WizardForm.CancelButton.Top:= ScaleY(80);

WizardForm.CancelButton.BringToFront;

ResizeButton.Left:= ScaleX(60);

ResizeButton.Top:= ScaleY(80);

ResizeButton.Caption:= 'Max.';

PageResized:= True;

end;



procedure ResumeInstallPage();

begin

WizardForm.Width:= ScaleX(503);

WizardForm.Height:= ScaleY(388);

WizardForm.Position:= poScreenCenter;

if Show then begin

WizardForm.MainPanel.SetBounds(ScaleX(0), ScaleY(0), ScaleX(497), ScaleY(58));

WizardForm.MainPanel.Show;

WizardForm.Bevel1.Show;

end;

WizardForm.InnerNotebook.SetBounds(ScaleX(40), ScaleY(72), ScaleX(417), ScaleY(237));

WizardForm.StatusLabel.SetBounds(ScaleX(0), ScaleY(0), ScaleX(417), ScaleY(16));

WizardForm.FilenameLabel.SetBounds(ScaleX(0), ScaleY(16), ScaleX(417), ScaleY(16));

WizardForm.ProgressGauge.SetBounds(ScaleX(0), ScaleY(42), ScaleX(417), ScaleY(21));

WizardForm.CancelButton.SetBounds(ScaleX(412), ScaleY(327), ScaleX(75), ScaleY(23));

ResizeButton.SetBounds(ScaleX(20), ScaleY(327),ScaleX(75), ScaleY(23));

ResizeButton.Caption:= 'Min.';

PageResized:= False;

end;



procedure ResizeButtonOnClick(Sender: TObject);

begin

If PageResized then

ResumeInstallPage

else

MinimizeInstallPage;

end;



procedure InitializeWizard();

begin

ResizeButton:= TButton.Create(WizardForm);

ResizeButton.SetBounds(ScaleX(20), ScaleY(327),ScaleX(75), ScaleY(23));

ResizeButton.OnClick:= @ResizeButtonOnClick;

ResizeButton.Caption:= 'Min.';

ResizeButton.Hide;

ResizeButton.Parent:= WizardForm;

end;



procedure CurPageChanged(CurPageID: Integer);

begin

ResizeButton.Hide;

case CurPageID of

wpInstalling:

begin

Show:= true;

ResizeButton.Show;

end;

wpFinished:

begin

Show:= false;

ResumeInstallPage;

DeleteMenu(GetSystemMenu(WizardForm.Handle,False),$F060,0);

end;

end;

end;



procedure BtnDisable();

begin

ResizeButton.Enabled := False;

end;[/spoiler]




Необходимо выполнить следующее:

1. При клике на кнопку "Min" фоновое изображение закрывается

2. При клике на кнопку "Max" фоновое изображение отображается
Аватара пользователя
Earlex

Re: Скрипты Inno Setup. Помощь и советы [часть 9]

Сообщение Earlex »

Цитата ROMKA-1977:



Необходимо выполнить следующее:

1. При клике на кнопку "Min" фоновое изображение закрывается

2. При клике на кнопку "Max" фоновое изображение отображается
Скрипты Inno Setup. Помощь и советы [часть 9]




ROMKA-1977, в секцию Setup добавить WindowVisible=yes и WindowShowCaption=no, в процедуре ResizeButtonOnClick в конце дописать MainForm.Visible := not PageResized;
Ответить

Вернуться в «Автоматическая установка приложений»