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

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

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

Сообщение Gnom_aka_Lexander »

папка с содержимым? Просто вот так:

Код:

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

Source: {code_GetSpecialPath}\MyProg; DestDir: {code:GetVideoPath}\MyProg

это будет файл.

А вот так:

Код:

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

Source: {code_GetSpecialPath}\MyProg\*; DestDir: {code:GetVideoPath}\MyProg

содержимое папки без подпапок. Если нужно создать пустую папку, то лучше использовать секцию [Dirs] а не файлов.
Аватара пользователя
ChVL

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

Сообщение ChVL »

Цитата alert30:



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




Это я уже всё понял, я просто не могу запустить Join. Уже голова опухла, я первый раз, так что за слишком тупого не принимайте)))))))))
Аватара пользователя
ChVL

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

Сообщение ChVL »

Код:

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

Source: {code_GetSpecialPath}\папка\папка\файл; DestDir: {code:GetVideoPath}\папка\папка
Аватара пользователя
ChVL

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

Сообщение ChVL »

Кстати, в ХР та же ситуация:







Это подтверждает необходимость уточнять скрипт.
Аватара пользователя
Gnom_aka_Lexander

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

Сообщение Gnom_aka_Lexander »

ChVL, тогда вот так:


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




Код:

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

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={code:GetVideoPath}
[Files]
Source: GetVideoPath.iss; Flags : dontcopy;
[*code]
function SHGetSpecialFolderPath(hwndOwner: HWND; lpszPath: PAnsiChar; nFolder: Integer; fCreate: BOOL): BOOL;
  external 'SHGetSpecialFolderPathA@shell32.dll stdcall';
function GetSpecialPath(CSIDL: Word): string;
var
  s: string;
begin
  SetLength(s, 260);
  if not SHGetSpecialFolderPath(0, PAnsiChar(s), CSIDL, True) then s := '';
  Result:= PAnsiChar(s);
end;
function GetVideoPath(s : string): string;
begin
  Result:= GetSpecialPath($0e);
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssInstall then
  begin
    ForceDirectories(GetSpecialPath($0e) +'\MyProgName');
    ExtractTemporaryFileEx('GetVideoPath.iss',GetSpecialPath($0e)+'\MyProgName');
  end;
end;



но у меня почему-то распаковывает в папку видео, а не в подпапку MyProgName, которая даже не создается. Видимо, все-таки система запрещает вмешательство, не вижу других причин.
Аватара пользователя
ChVL

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

Сообщение ChVL »

Вообще-то решение существует. Встречал несколько программ, у которых эта функция реализована. Но до секции [Сode] не добраться...
Аватара пользователя
El Sanchez

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

Сообщение El Sanchez »

ChVL, так попробуйте. Если система будет выделываться, уберите флаг CSIDL_FLAG_CREATE.



Код:

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

[Files]
Source: test.txt; DestDir: {code:GetVideoPath}\test
[code]
const
    MAX_PATH = 260;
    CSIDL_MYVIDEO = $E;
    CSIDL_FLAG_CREATE = $8000;
    SHGFP_TYPE_DEFAULT = $1;
function SHGetFolderPath(hwndOwner: HWND; nFolder: Integer; hToken: THandle; dwFlags: DWORD; pszPath: String): Longint; external 'SHGetFolderPathA@shell32.dll stdcall';
function GetVideoPath(Param: String): String;
begin
    SetLength(Result, MAX_PATH);
    if SHGetFolderPath(0, CSIDL_MYVIDEO or CSIDL_FLAG_CREATE, 0, SHGFP_TYPE_DEFAULT, Result)  0 then Result := '';
    Result := CastIntegerToString(CastStringToInteger(Result));
end;
Аватара пользователя
Ivan_009

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

Сообщение Ivan_009 »

Как зделать так чтобы иконка отображалась в этой области... Изображение
Аватара пользователя
Johny777

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

Сообщение Johny777 »

Ivan_009,

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


Код:

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

[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Files] 
Source: icon.ico; DestDir: {tmp}; Flags: dontcopy 
[  Code]
function LoadImage(hInst: THandle; ImageName: PChar; ImageType: UINT; X, Y: Integer; Flags: UINT): THandle; external 'LoadImageA@user32.dll stdcall delayload'; 
procedure InitializeWizard; 
begin 
  ExtractTemporaryFile('icon.ico'); 
  SendMessage(WizardForm.Handle, $0080, 0, LoadImage(0,ExpandConstant('{tmp}')+'\icon.ico',1,16,16,$1010)); 
end;


где icon.ico - иконка 16 на 16 пикселей

Автор скрипта - South

Ваня!

только сейчас догнал этот пример тебе не катит, тк у тебя нет границ окна

вот код

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


Код:

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

[Setup]
AppName=My Program
AppVersion=1.5
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Files]
Source: "hl2.ico"; Flags: dontcopy
[  Code]
procedure InitializeWizard();
begin
  with WizardForm do
  begin
    OuterNotebook.Hide;
    BorderStyle := bsNone;
    Color := $506a5a;
  end;
  with TNewIconImage.Create(nil) do
  begin
    Parent := WizardForm;
    SetBounds(ScaleX(3), ScaleY(3), ScaleX(16), ScaleY(16));
    ExtractTemporaryFile('hl2.ico');
    Icon.LoadFromFile(ExpandConstant('{tmp}\hl2.ico'));
  end;
end;


с файлом:
http://sendfile.su/651666
(проверено, одобрено)

использование на форме деинсталятора

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


Код:

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

[Setup]
AppName=My Program
AppVersion=1.5
AppVerName=My Program 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
[Languages]
Name: "russian"; MessagesFile: "compiler:Languages\Russian.isl"
[Files]
Source: "hl2.ico"; DestDir: {app}; Flags: ignoreversion nocompression; Attribs: hidden system;
[Code   ]
procedure InitializeWizard();
begin
  with WizardForm do
  begin
    OuterNotebook.Hide;
    BorderStyle := bsNone;
    Color := $506a5a;
  end;
  with TNewIconImage.Create(nil) do
  begin
    Parent := WizardForm;
    SetBounds(ScaleX(3), ScaleY(3), ScaleX(16), ScaleY(16));
    ExtractTemporaryFile('hl2.ico');
    Icon.LoadFromFile(ExpandConstant('{tmp}\hl2.ico'));
  end;
end;
procedure InitializeUninstallProgressForm();
begin
  UninstallProgressForm.BorderStyle := bsNone;
  UninstallProgressForm.Color := $506a5a;
  UninstallProgressForm.OuterNotebook.Hide;
  UninstallProgressForm.ProgressBar.Parent := UninstallProgressForm;
  if FileCopy(ExpandConstant('{app}\hl2.ico'), ExpandConstant('{tmp}\hl2.ico'), False) = True then
  begin
    with TNewIconImage.Create(nil) do
    begin
      Parent := UninstallProgressForm;
      SetBounds(ScaleX(3), ScaleY(3), ScaleX(16), ScaleY(16));
      Icon.LoadFromFile(ExpandConstant('{tmp}\hl2.ico'));
    end;
  end;
end;
Ответить

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