Inno Setup kopiowanie folderu do AppData\Local

0

Cześć, mam taki mały problem w InnoSetup
Jak po instalacji skopiować katalog do AppData\Local?

Powiedzmy że program zaistalowałem na C:\MyApp a w nim katralog _mydata który chce skoiować do AppData\Local jak to zrobić?

Może to i lamerskie pytanie, ale ktoś podpowie?

1

Najprościej byłoby tak:

[Setup]
AppName=My Application
AppVersion=1.0
DefaultDirName={pf}\MyApp
DefaultGroupName=My Application

[Files]
Source: "{app}\_mydata*"; DestDir: "{localappdata}\[TU WPISZ DO JAKIEGO KATALOGU]"; Flags: ignoreversion recursesubdirs createallsubdirs

[Code]
procedure InitializeWizard();
begin
  // Tutaj możesz dodać dowolny kod, który będzie uruchamiany podczas inicjalizacji kreatora
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = wpFinished then
  begin
    // Kod, który zostanie uruchomiony po instalacji
  end;
end;

Jeżeli ciebie to nie zadowala spróbuj tak

[Setup]
AppName=My Application
AppVersion=1.0
DefaultDirName={pf}\MyApp
DefaultGroupName=My Application

[Code]
// funkcja kopiowania folderu
function CopyDir(const SourcePath, DestPath: string): Boolean;
var
  ErrorCode: Integer;
begin
  Result := CreateDir(DestPath);
  if not Result and (DirExists(DestPath)) then
    Result := True;

  if Result then
  begin
{
    xcopy:

     /E: Kopiuje wszystkie podkatalogi, w tym puste.
     /I: Zakłada, że cel jest katalogiem, jeśli cel nie istnieje.
     /Y: Nie pyta o potwierdzenie przy nadpisywaniu plików.

}
    Result := ShellExec('', 'cmd.exe', Format('/C xcopy /E /I /Y "%s" "%s"', [SourcePath, DestPath]), '', SW_HIDE, ewNoWait, ErrorCode);
  end;
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
  SourcePath, DestPath: string;
begin
  if CurStep = wpFinished then
  begin
    SourcePath := ExpandConstant('{app}\_mydata');
    DestPath := ExpandConstant('{localappdata}\[TU WPISZ DO JAKIEGO KATALOGU]'); // ustaw po swojemu np  ExpandConstant('{localappdata}\MyApp');

    if not CopyDir(SourcePath, DestPath) then
    begin
      MsgBox('Failed to copy _mydata folder to AppData\Local.', mbError, MB_OK);
    end;
  end;
end;

0

@first_person Dzięki, o to mniej więcej mi chodziło. Tylko że katalog _mydata ma być w folderze AppData\Local

1

HMM, It's not hard.

`procedure CurStepChanged(CurStep: TSetupStep);
var
  SourcePath, DestPath: string;
begin
  if CurStep = wpFinished then
  begin
    SourcePath := ExpandConstant('{app}\_mydata');
    DestPath := ExpandConstant('{localappdata}\_mydata}') // ISTOTNE ;D

    if not CopyDir(SourcePath, DestPath) then
    begin
      MsgBox('Failed to copy _mydata folder to AppData\Local.', mbError, MB_OK);
    end;
  end;
end;

1

Fakt, sorry i dzięki zakręciłem się :)

1

Preferuje funkcje która dałem wyżej CopyDir. Możesz dostosować ścieżki SourcePath i DestPath w zależności od swoich potrzeb. funkcja używa polecenia xcopy, aby skopiować katalog i wszystkie jego zawartości. Jeśli operacja kopiowania się nie powiedzie, zwraca false

1

@first_person Zmodyfikowalem ja lekko.

function CopyDir(const SourcePath, DestPath: string): Boolean;
var
  ErrorCode: Integer;
begin
  // Jezeli brak katalogu zrodlowego dajemy False
  if not DirExists(SourcePath) then
  begin
    Result := False;
    Exit;
  end;

  Result := CreateDir(DestPath);
  if not Result and (DirExists(DestPath)) then
    Result := True;

  if Result then
  begin
{
    xcopy:

     /E: Kopiuje wszystkie podkatalogi, w tym puste.
     /I: Zakłada, że cel jest katalogiem, jeśli cel nie istnieje.
     /Y: Nie pyta o potwierdzenie przy nadpisywaniu plików.

}
    Result := ShellExec('', 'cmd.exe', Format('/C xcopy /E /I /Y "%s" "%s"', [SourcePath, DestPath]), '', SW_HIDE, ewNoWait, ErrorCode);
  end;
end;

2

Spoko, niech służy. Modyfikuj dowoli, a nawet system operacyjny z niej zrób jak chcesz ;D

Cheers

1

Dałem radę. Dzięki :)

1

w pierwszym poscie:

[Files]
Source: "{app}\_mydata*"; DestDir: "{localappdata}\[TU WPISZ DO JAKIEGO KATALOGU]"; Flags: ignoreversion recursesubdirs createallsubdirs

zamień na

[Files]
Source: "C:\MyApp\_mydata\*"; DestDir: "{localappdata}\[TU WPISZ DO JAKIEGO KATALOGU]"; Flags: ignoreversion recursesubdirs createallsubdirs


1 użytkowników online, w tym zalogowanych: 0, gości: 1