2013-05-16 15 views
6

Jak możemy skopiować, przenieść, zmienić nazwy plików użytkownika przed instalacją?InnoSetup - skopiuj pliki przed instalacją

Możemy łatwo usunąć pliki przy użyciu [InstallDelete] rozdział:

[InstallDelete] 
Type: files; Name: "{app}\SomeFile.exe"; 

możemy zrobić kopię, zmienić w podobny sposób?

EDIT:

starałem się zrobić to w sekcji [Files] ale otrzymuję błąd podczas kompilacji ponieważ plik źródłowy nie istnieje:

[Files] 
Source: "{app}\SomeFile.exe"; DestDir: "{app}\SomeDir\SomeFile.exe"; 
+0

Jeśli plik źródłowy nie istnieje, jak jest InnoSetup powinien umieścić go w instalacji? –

+1

@ Thorsten, możesz użyć flagi ['external'] (http://www.jrsoftware.org/ishelp/index.php?topic=filessection&anchor=external), ale to zły pomysł, nawet gdyby działał. – TLama

+0

@Thorsten: Nie chcę dołączać tych plików do instalacji. Są to pliki zapisu użytkownika, które chcę przenieść w innym podkatalogu aplikacji (jeśli pliki istnieją). –

Odpowiedz

8

Do kopiowania plików można użyć sekcję [Files] , ale nie sądzę, że istnieje sposób na przeniesienie lub zmianę nazwy operacji w oddzielnej sekcji, więc proponuję użyć do tego sekcji [Code].

Oto przykładowy kod operacji przenoszenia i zmiany nazwy. Obaj użyć funkcji RenameFile jak jest wewnętrznie sama operacja:

[Code] 
procedure CurStepChanged(CurStep: TSetupStep); 
begin 
    if CurStep = ssInstall then 
    begin 
    // move file 
    if not RenameFile(ExpandConstant('{app}\SomeDir\SomeFile.exe'), ExpandConstant('{app}\SomeFile.exe')) then 
     MsgBox('File moving failed!', mbError, MB_OK); 
    // rename file 
    if not RenameFile(ExpandConstant('{app}\SomeFile.exe'), ExpandConstant('{app}\RenamedSomeFile.exe')) then 
     MsgBox('File moving failed!', mbError, MB_OK); 
    end; 
end; 
+1

Dziękujemy! Właśnie szukałem funkcji [Code], która posłużyła do umieszczenia kodu przeniesienia. procedura CurStepChanged (CurStep: TSetupStep); będzie działać dobrze. Co więcej, mogę ostrzec użytkownika, że ​​przeniosłem jego pliki składowania. –

+0

Nie ma za co! I tak, to brzmi uczciwie dla użytkowników :-) – TLama

+1

Należy pamiętać, że pliki użytkownika powinny znajdować się w jednym z folderów '{user *}' - i że nie można polegać na instalatorze, aby przenieść je za Ciebie. Instalator jest uruchamiany tylko przez jednego użytkownika, ale wiele osób mogło używać aplikacji. Odpowiedzialność za zarządzanie nimi ponosi sama aplikacja. – Miral

Powiązane problemy