2012-11-24 25 views
6

i Inno kurulum başlamadan önce, bir klasöre dosya kopyalamak veya birisi eğer seçme dir sayfasından önce, ben, bu dosya ve harici bir kaynaktan yükleyici kopyalanması istediğiniz gerekir bir örnek ver lütfen. Inno Kurulumu - Kurulum Başlatılmadan önce bir dosya nasıl kopyalanır? senin yardımına ihtiyacım

bu kodu kullanıyor muyum:

function NextButtonClick1(PageID: Integer): Boolean; 
begin 
    Result := True; 
    if (PageId = wpWelcome) then begin 
     FileCopy(ExpandConstant('file.exe'), ExpandConstant('{reg:HKCU\SOFTWARE\XXX,InstallPath}\file.exe'), false); 
    end; 
end; 

Birisi bir örnekle daha iyi bir fikir vermek istiyoruz. Bundan sonra teşekkürler.

+2

Not o - - sonuçta, o noktaya kadar iptal etmek isteyebilirler. Ayrıca, beklediğiniz kullanıcı için olmayabilir, HKCU'daki ayarları kullanmak veya değiştirmek için de kaşlarını çattı. – Miral

cevap

10

Eğer ExtractTemporaryFile prosedürü kullanmak gerekecektir gereken herhangi bir zaman arşiv kurulumdan bir dosyayı ayıklamak için. Bu yordam, dosyayı [Files] bölümünden, {tmp} sabiti tarafından belirtilen yol üzerinde bulabileceğiniz kurulum uygulaması tarafından kullanılan geçici bir dizine ayıklar. Ardından, söz konusu sabitlenmiş dosyayı genişleterek bu tür bir çıkartılmış dosyayı oradan bir hedef dizine kopyalayacaksınız.

kurulum başlatıldı edilirken bir şey yapmak istiyorsanız

ancak sihirbaz formu oluşturulmadan önce InitializeSetup olay işlevini kullanın. Hatta sihirbaz formunu görmeden kurulumdan bu fonksiyondan çıkabileceğinizi unutmayın. kopyalayacağınız dosya çok kritikse. Aşağıda örnek bir şifre, ama ilk olarak bazı ayrıntılar için bunun commented version bakabilirsiniz: genellikle aslında yüklemek başlamak için nihai İleri'ye tıklayın önce kullanıcının sistemi değişiklik yapmak için ilgili hoş oluyor

[Code] 
function InitializeSetup: Boolean; 
begin 
    Result := True; 
    ExtractTemporaryFile('File.exe'); 
    if FileCopy(ExpandConstant('{tmp}\File.exe'), 
    ExpandConstant('{reg:HKCU\SOFTWARE\XXX,InstallPath}\File.exe'), False) 
    then 
    MsgBox('File copying succeeded!', mbInformation, MB_OK) 
    else 
    MsgBox('File copying failed!', mbError, MB_OK) 
end; 
3
Önce geçici bir dizine, dosya ayıkla gerekir

, ardından istediğiniz yere kopyalayabilirsiniz. Böyle bir şey çalışması gerekir:

; Script generated by the Inno Setup Script Wizard. 
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! 

#define MyAppName "My Program" 
#define MyAppVersion "1.5" 
#define MyAppPublisher "My Company, Inc." 
#define MyAppURL "http://www.example.com/" 
#define MyAppExeName "MyProg.exe" 

[Setup] 
; NOTE: The value of AppId uniquely identifies this application. 
; Do not use the same AppId value in installers for other applications. 
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) 
AppId={{5820E516-8DD7-4481-A016-63D3F00438C8} 
AppName={#MyAppName} 
AppVersion={#MyAppVersion} 
;AppVerName={#MyAppName} {#MyAppVersion} 
AppPublisher={#MyAppPublisher} 
AppPublisherURL={#MyAppURL} 
AppSupportURL={#MyAppURL} 
AppUpdatesURL={#MyAppURL} 
DefaultDirName={pf}\{#MyAppName} 
DefaultGroupName={#MyAppName} 
OutputBaseFilename=setup 
Compression=lzma 
SolidCompression=yes 

[Languages] 
Name: "english"; MessagesFile: "compiler:Default.isl" 

[Tasks] 
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked 

[Files] 
Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion 
; NOTE: Don't use "Flags: ignoreversion" on any shared system files 

[Icons] 
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" 
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon 

[Run] 
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, "&", "&&")}}"; Flags: nowait postinstall skipifsilent 


[Code] 
function InitializeSetup: Boolean; 
var 
    S: AnsiString; 
begin 
    // Show the contents of Readme.txt (non Unicode) in a message box 
    log('Before Extract'); 
    ExtractTemporaryFile('myprog.exe'); 
    log('Before FileCopy. Dest:' + ExpandConstant('{reg:HKCU\SOFTWARE\XXX,InstallPath}\file.exe')); 
    log('temp: ' + ExpandConstant('{tmp}\myprog.exe')); 
    FileCopy(ExpandConstant('{tmp}\myprog.exe'), ExpandConstant('{reg:HKCU\SOFTWARE\XXX,InstallPath}\file.exe'), false); 
    log('After FileCopy'); 
    Result := True; 
end; 
İlgili konular