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

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

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

Сообщение nik1967 »

SeDmY,

А зачем копировать DirectX и всякую мелкую дребедень в папку с игрой?

[Run]

Filename: "{src}\DirectX\DXSETUP.exe"; WorkingDir: "{src}\DirectX"; Parameters: "/silent"; Flags: waituntilterminated

То есть программа работает из директории установки: {src}, и не копируется в папку назначения {app}.
Аватара пользователя
SeDmY

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

Сообщение SeDmY »

CrOsP, вот, пробуй Изображение



Код:

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

[code]
//вешаем ссылку на подпись
var
  MouseLabel,SiteLabel: TLabel;
procedure SiteLabelOnClick(Sender: TObject);
var
  ErrorCode: Integer;
begin
  ShellExec('open', 'http://game.dnet.com.ua', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode)
end;
procedure SiteLabelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  SiteLabel.Font.Color:=$0000C8FF
end;
procedure SiteLabelMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  SiteLabel.Font.Color:=$000080FF
end;
procedure SiteLabelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  SiteLabel.Font.Color:=$0000A0FF
end;
procedure SiteLabelMouseMove2(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  SiteLabel.Font.Color:=$000080FF
end;
// Importing LoadSkin API from ISSkin.DLL
procedure LoadSkin(lpszPath: String; lpszIniFileName: String);
external 'LoadSkin@files:isskin.dll stdcall';
// Importing UnloadSkin API from ISSkin.DLL
procedure UnloadSkin();
external 'UnloadSkin@files:isskin.dll stdcall';
// Importing ShowWindow Windows API from User32.DLL
function ShowWindow(hWnd: Integer; uType: Integer): Integer;
external 'ShowWindow@user32.dll stdcall';
function InitializeSetup(): Boolean;
begin
  ExtractTemporaryFile('Office2007.cjstyles');
  LoadSkin(ExpandConstant('{tmp}\Office2007.cjstyles'), '');
  Result := True;
end;
procedure InitializeWizard();
begin
 WizardForm.Position:= poScreenCenter; //отключение о программе
 //вешаем ссылку
  MouseLabel:=TLabel.Create(WizardForm)
  MouseLabel.Width:=WizardForm.Width
  MouseLabel.Height:=WizardForm.Height
  MouseLabel.Autosize:=False
  MouseLabel.Transparent:=True
  MouseLabel.OnMouseMove:=@SiteLabelMouseMove2
  MouseLabel.Parent:=WizardForm
  SiteLabel:=TLabel.Create(WizardForm)
  SiteLabel.Left:=10
  SiteLabel.Top:=330
  SiteLabel.Cursor:=crHand
  SiteLabel.Font.Color:=$000080FF
  SiteLabel.Caption:='Наш сайт game.dnet.com.ua'
  SiteLabel.OnClick:=@SiteLabelOnClick
  SiteLabel.OnMouseDown:=@SiteLabelMouseDown
  SiteLabel.OnMouseUp:=@SiteLabelMouseUp
  SiteLabel.OnMouseMove:=@SiteLabelMouseMove
  SiteLabel.Parent:=WizardForm
end;
procedure DeinitializeSetup();
begin
  // Hide Window before unloading skin so user does not get
  // a glimpse of an unskinned window before it is closed.
  ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);
  UnloadSkin();
end;
Аватара пользователя
SeDmY

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

Сообщение SeDmY »

Здравствуйте. Inno Setup очень хорошо обращается с ini файлами, жалко с xml так нельзя.

Мне нужно в конце установки найти в XML файле строчку

Код:

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

<Setting name="Language Code" type="string">en</Setting>

и заменить ее на

Код:

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

<Setting name="Language Code" type="string">ru</Setting>

Возможно ли это сделать силами самой inno?
Аватара пользователя
paravozik2009

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

Сообщение paravozik2009 »

Цитата Schemer:



Возможно ли это сделать силами самой inno
[архив] Скрипты Inno Setup. Помощь и советы [часть 2]




Вот процедура замены текста в файле. Кажется давно ее мне подогнал Serega



Код:

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

procedure RePlaceTextinFile(FilePath:string; find:string; replace:string);
var
  S: TArrayOfString;
  //str : string;
  i : Integer;
begin
  if not FileExists(FilePath) then begin MsgBox('Файл не найден', mbError, mb_Ok); Exit;end; // если файла нет, выходим
  LoadStringsFromFile(FilePath, S); // загружаем файл
  for i:= 0 to GetArrayLength(S)-1 do begin
    if (Pos(AnsiUpperCase(find), AnsiUpperCase(S[i])) > 0) then begin
      StringChangeEx(S[i], find, replace, True);
    end;
  end;
  SaveStringsToFile(FilePath, S, False); // сохраняем файл
end;
Аватара пользователя
paravozik2009

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

Сообщение paravozik2009 »

R.i.m.s.k.y., у меня ещё небольшой вопрос по поводу поиска по реестру.

Я ищу установленные AutoCAD'ы на компьютере. Все они в реестре имеют вид по такому шаблону:

HKEY_LOCAL_Machine\SOFTWARE\Autodesk\AutoCAD\16.2\409:5005 (а дальше - ключи)

HKEY_LOCAL_Machine\SOFTWARE\Autodesk\AutoCAD\17.1\519:6007 (а дальше - ключи)

Нужно организовать перебор по этим папкам (внутри - перебор по соответствию ключа "ProductName" членам "рукотворного" списка). Я писал, писал, и запутался:





Код:

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

if RegGetSubkeyNames(HKEY_LOCAL_Machine, 'SOFTWARE\Autodesk\AutoCAD\', Names) then
  begin
    for i:=0 to GetArrayLength(Names)-1 do
       if RegGetSubkeyNames(Names[i], Names2) then
          begin
             for j:=0 to GetArrayLength(Names2)-1 do
             if RegGetSubkeyNames(Names2[j], Names3) then
                begin
                for k:=0 to GetArrayLength(Names3)-1 do
                   if (Names3[k] = 'ProductName') and ...
Аватара пользователя
nik1967

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

Сообщение nik1967 »

paravozik2009, Именно .cab файлов? Или всё же файлов .arc, переименованных в файлы .cab?
Аватара пользователя
SeDmY

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

Сообщение SeDmY »

Нужна помощь:







как мне поступить!?



Запустил скрипт :
http://forum.ru-board.com/topic.cgi?...&start=1000#20




Даже не менял ничего!
Аватара пользователя
SeDmY

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

Сообщение SeDmY »

Цитата Schemer:



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




Не написали какую ошибку.

Вот мой код использования этой процедуры



Код:

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

RePlaceTextinFile(ExpandConstant('{app}\x264\Megui\allprofiles\AviSynth\AviSynth_dp_ FFT3DGPU.xml'), 'import("', 'import("'+plugindir2_5+'\');

Подменяет в профилях настройки MEGUI путь к плагинам.

plugindir2_5 вычисляется чуть выше (берется из реестра)

В вашем случае



Код:

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

[_Code]
...
RePlaceTextinFile(ExpandConstant('C:\file.xml'), 'en', 'ru');
...
Аватара пользователя
R.i.m.s.k.y.

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

Сообщение R.i.m.s.k.y. »

Schemer, спасибо за подсказку!

У меня в голове Icons ни как не ассоциировалось со списком файлов в меню Пуск.

Подсказка помогла.

Наверное более уместным было бы название секции Items.
Ответить

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