2013-05-16 27 views
6

Kurulumdan önce kullanıcı dosyalarını nasıl kopyalayabilir, taşıyabilir, yeniden adlandırabiliriz?InnoSetup - dosyaları yüklemeden önce

Biz kolayca [InstallDelete] bölümünü kullanarak dosyaları silebilirsiniz:

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

biz yapabilir miyiz kopyalama, benzer şekilde adlandırmak?

DÜZENLEME: [Dosyalar] bölümünde bu yapmaya çalıştı

ancak kaynak dosya yok çünkü derleme sırasında bir hata alırsınız: Eğer [Files] bölümünü kullanabilirsiniz

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

kaynak dosyası yoksa, nasıl InnoSetup montaj dahil etmek gerekiyordu: dahili olarak aynı işlemdir olarak İkisi RenameFile işlevini kullanın? –

+1

@Thorsten, ['external'] (http://www.jrsoftware.org/ishelp/index.php?topic=filessection&anchor=external) bayrağını kullanabilirsiniz, ancak çalışsa bile kötü bir fikirdir. – TLama

+0

@Thorsten: Bu dosyayı yüklemeye dahil etmek istemiyorum. Bunlar, kullanıcının] uygulamasının diğer alt dizininde taşımak istediğim dosyaları kaydeder (dosyalar varsa). –

cevap

8

dosya kopyalama için Ancak, sanırım ayrı bir bölümde taşıma veya yeniden adlandırma işlemleri için bir yol olduğunu düşünmüyorum, bu yüzden bunun için [Code] bölümünü kullanmanızı öneririm.

İşte taşıma ve yeniden adlandırma işlemleri için örnek kod.

[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

Teşekkür ederiz! Hareket kodunu yerleştirmek için [Code] işlevinin ne işe yaradığını arıyordum. prosedür CurStepChanged (CurStep: TSetupStep); iyi çalışır. Daha da iyisi, kullanıcıyı kaydetme dosyalarını değiştirdiğimi bildirebilirim. –

+0

Rica ederim! Ve evet, bu kullanıcılara adil geliyor :-) – TLama

+1

Kullanıcı dosyalarının '{user *}' klasörlerinden birinde olması gerektiğini ve bunları sizin için taşımak için yükleyiciye güvenemeyeceğinizi unutmayın. Yükleyici yalnızca bir kullanıcı tarafından çalıştırılır, ancak birden çok uygulamanızı kullanıyor olabilir. Bunları yönetmek için uygulamanın kendisinin sorumluluğu olmalıdır. – Miral

İlgili konular