2013-09-03 21 views
9

Yükleme bittikten sonra bazı dosyaları silmem gerekiyor.Bir dosyayı sil InnoSetup yüklemesinden sonra

Dosyaları silmek için CMD'yi çağırmak için [RUN] bölümünü kullanıyordum, ancak InnoSetup kodunu kullanarak Silmeyi iyileştirmek istedim ve Batch yerine [InstallDelete] bölümünü gördüm ancak bu dosyaları silmeden ÖNCE [RUN] bölümü ... [RUN] bölümünden sonra dosyaları silmek için yapabileceğim bir şey var mı?

#define InstallerName "VirtualBox-4.2.16-r86992-MultiArch_amd64.msi" 
#define ExtensionName "Oracle_VM_VirtualBox_Extension_Pack-4.2.16-86992.vbox-extpack" 

[Setup] 
AppName=VirtualBox 
blah blah blah... 
blah blah blah... 

[Files] 
Source: {tmp}\*; DestDir: {tmp}; Flags: deleteafterinstall recursesubdirs createallsubdirs ignoreversion 

[Run] 
Filename: {tmp}\{#InstallerName}; Parameters: "/passive /norestart ADDLOCAL=VBoxApplication INSTALLDIR=""{app}"""; StatusMsg: Instalando VirtualBox...; Flags: shellexec RunHidden WaitUntilTerminated 
Filename: {tmp}\xml.exe; Parameters: "ed --inplace -N N=""http://www.innotek.de/VirtualBox-settings"" --update ""//N:ExtraDataItem[@name='GUI/UpdateDate']/@value"" --value never ""{%userprofile}\.virtualbox\virtualbox.xml"""; StatusMsg: Instalando VirtualBox...; Flags: RunHidden WaitUntilTerminated 
Filename: {app}\VBoxManage.exe; Parameters: "extpack install --replace ""{tmp}\{#ExtensionName}"""; StatusMsg: Instalando Extension Pack...; Flags: RunHidden WaitUntilTerminated 
Filename: {app}\virtualbox.exe; Description: {cm:LaunchProgram,VirtualBox}; Flags: shellexec postinstall unchecked skipifsilent nowait 

[InstallDelete] 
Name: {commondesktop}\Oracle VM VirtualBox.lnk; Type: files 
Name: {commonstartmenu}\Programs\Oracle VM VirtualBox; Type: filesandordirs 

cevap

9

adımını Kurulum Sonrası 'dosyalarınızı silebilirsiniz:

İşte benim senaryom. Bir alt kuruluş tarafından gerekli):

{tmp}'a kurduğunuz her şey, yükleme sonunda otomatik olarak silinecektir.

Bir nedenle {tmp}'a yükleyemiyorsanız, [Files] girişindeki deleteafterinstall bayrağını kullanabilirsiniz.

Bu alt kuruluş tarafından oluşturulan dosyaları silmeye çalışıyorsanız, satıcılarla iletişim kurmalı veya belgelerini kontrol etmeli ve ilk önce bu öğenin yüklenmesini engellemek için geçirebileceğiniz bir komut satırı parametresi olup olmadığına bakın. Masaüstü simgeleri gibi isteğe bağlı şeyler için genellikle olmalıdır.

+1

Bu dosyalar anladığım kadarıyla kurulumun bir parçası değil, dolayısıyla 'deleteafterinstall' bir seçenek değil. Cevabınız yanlış olabilir .. –

+0

Cevabınız için teşekkür ederiz, evet belki de MSI lnk dosyalarını yüklemeyen bir paket/parametre olup olmadığını araştırmak için belki de en iyi yolu araştırmak ama aynı şeyi çok yapmak zorundayım Yükleyicilerin bu yüzden her MSI paket seçeneği için bu zamanı harcayamam. – ElektroStudios

10

Sen geçici dosyaları silmek için çalışıyorsanız örneğin (CurStepChanged olay işleyicisi

[Code] 
procedure CurStepChanged(CurStep: TSetupStep); 
begin 
    if CurStep = ssPostInstall then begin 
    DeleteFile(ExpandConstant('{commondesktop}\Oracle VM VirtualBox.lnk')); 
    .. 
+0

Teşekkürler ama Pascal veya Batch kullanmadan bunu yapmak için herhangi bir şans var mı? – ElektroStudios

+1

@Elektro - AFAIK, no. Ama kodda InnoSetup kodunun bir parçası olmak için 'kod' düşünürdüm, ama bu benim düşüncem olurdu. –

+0

Eğer harici kod kullanarak başka bir yol yoksa ... teşekkürler – ElektroStudios

1

Sonunda yaptığım şey bu.

Firtlar [InstallDelete] bölümünde varsa orijinal MSI paket dosyalarını silmeyi denedim ancak bu klasörün tamamını silmez, daha sonra bir "korsan dosya ve klasörü aynı konumlarda" deleteainstall ile ayıkladım. "onları silmek için bayrak.

Bunun geliştirilebileceğini düşünüyorsanız, lütfen nasıl yapılacağını bana söyleyin, bunun için gerçekten harici kod kullanmak istemiyorum çünkü yaklaşık 200 kurucu için yazmak için "genel" bir yönteme ihtiyacım var Bu yükleyici için kod çok zaman alır.

#define InstallerName "VirtualBox-4.2.16-r86992-MultiArch_amd64.msi" 
#define ExtensionName "Oracle_VM_VirtualBox_Extension_Pack-4.2.16-86992.vbox-extpack" 

[Setup] 
AppName=VirtualBox 
... 
... 

[InstallDelete] 
Name: {commondesktop}\Oracle VM VirtualBox.lnk; Type: files 
Name: {commonstartmenu}\Programs\Oracle VM VirtualBox; Type: filesandordirs 

[Dirs] 
Name: {commonstartmenu}\Programs\Oracle VM VirtualBox; Flags: deleteafterinstall; attribs: hidden 

[Files] 
Source: {commondesktop}\Oracle VM VirtualBox.lnk; DestDir: {commondesktop}; Flags: deleteafterinstall ignoreversion; Attribs: hidden 
Source: {tmp}\*; DestDir: {tmp}; Flags: deleteafterinstall recursesubdirs createallsubdirs ignoreversion 

[Icons] 
Name: {userstartmenu}\Programs\Multimedia\VirtualBox; Filename: {app}\virtualbox.exe; WorkingDir: {app} 

[Run] 
Filename: {tmp}\{#InstallerName}; Parameters: "/passive /norestart ADDLOCAL=VBoxApplication INSTALLDIR=""{app}"""; StatusMsg: Instalando VirtualBox...; Flags: shellexec RunHidden WaitUntilTerminated 
Filename: {tmp}\xml.exe; Parameters: "ed --inplace -N N=""http://www.innotek.de/VirtualBox-settings"" --update ""//N:ExtraDataItem[@name='GUI/UpdateDate']/@value"" --value never ""{%userprofile}\.virtualbox\virtualbox.xml"""; StatusMsg: Instalando VirtualBox...; Flags: RunHidden WaitUntilTerminated 
Filename: {app}\VBoxManage.exe; Parameters: "extpack install --replace ""{tmp}\{#ExtensionName}"""; StatusMsg: Instalando Extension Pack...; Flags: RunHidden WaitUntilTerminated 
Filename: {app}\virtualbox.exe; Description: {cm:LaunchProgram,VirtualBox}; Flags: shellexec postinstall unchecked skipifsilent nowait 
+0

'[InstallDelete]' bölümü, yükleme işleminin ilk adımıdır, '[Run]' bölümü çok daha sonra gerçekleştirilir. Yani, [Çalıştır] bölümünden yüklü olan bir şeyi silerseniz, yanlış yapıyorsunuz demektir. Kodu [Kod] 'bölümünde kullanmak istemiyorsanız, ör. '' komutunu verin ve kurulum girişinden sonra '' Çalıştır '' bölümünden çalıştırın.Ancak, Miral'in öne sürdüğü gibi, en iyisi, yükleyicinin bu kısayolları oluşturmasını engellemenin bir yolu olup olmadığına bakmaktır. – TLama

+0

@TLama "Del" CMD komutu anlamına gelecektir veya belki bir InnoSetup Komutu mu? Yükleyicinin düzgün çalıştığını ve dosya ve klasörü sildiğini söylemem gerek. Biliyorum, işleri yapmanın biraz zor bir yolu ama ... xD – ElektroStudios

+0

çalışıyor, o zaman ben de sorunuzu tamamen yanlış anladım. [Çalıştır] bölümünden bir şey yüklediğinizi ve bir şeyin masaüstündeki kısayolları oluşturduğunu ve menüyü başlattığını düşündüm. Ve bir şey yapıldıktan sonra bu kısayolları silmek istediğiniz. – TLama

İlgili konular