inno Setup ve ek görevler

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

inno Setup ve ek görevler

Mesaj gönderen varyemez »

inno Setup da kurmamız gereken normal program dosyalarımızdan başka birkaç tane de DLL dosya var. Bunlar kurulum sonrasında bir defalığına regsvr32 ile kaydediliyor. (Daha açıkçası PocketSoap ı kendi exe sinden kurmak yerine bu 4 dll i kaydetmek istiyorum inno Setup sonunda) aynı şekilde midas.dll de var.
Şimdi sorunum şu. Eğer daha önceden makinaya pocketsoap ve midas.dll kaydedilmişse innosetup da bu adım atlansın
PocketSoap ın dll dosyaları bizim progamın klasorune değil de pocketsoap ın kendi klasorune
C:\Program Files\SimonFell\PocketSOAP\ içinde yerleşiyor. Burada da amacım şu: eğer makinada bizimkinden başka pocketsoap kullanan bir program varsa dll ler tekrar yüklenmesin. Teşekkürler.
cozturk
Üye
Mesajlar: 484
Kayıt: 15 Haz 2005 05:22

Re: inno Setup ve ek görevler

Mesaj gönderen cozturk »

Help dosyası yazdı:

Kod: Tümünü seç

[Files]
#ifexist "myfile.ext"
  Filename: "myfile.ext"; DestDir: {app}
#endif
#ifdef Enterpise
  Filename: "extra.dll"; DestDir: {app}
#endif
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: inno Setup ve ek görevler

Mesaj gönderen varyemez »

Teşekkürler @cozturk , Aşağıdaki gibi birşeyler yaptım ama istediğimi tam karşılamıyor.

Kod: Tümünü seç

(Files)
Source: "C:\hctp\share\hctpts.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\hctp\share\BKBAS.EXE"; DestDir: "{app}"; Flags: ignoreversion
Source: "C:\hctp\share\cevap.xml"; DestDir: "{app}"; Flags: ignoreversion

Source: "C:\hctp\share\PocketSoap\pocketHTTP.dll"; DestDir: "{pf}\SimonFell\PocketSOAP"; Flags: onlyifdoesntexist
Source: "C:\hctp\share\PocketSoap\pSOAP32.dll"; DestDir: "{pf}\SimonFell\PocketSOAP"; Flags: onlyifdoesntexist
Source: "C:\hctp\share\PocketSoap\psDime.dll"; DestDir: "{pf}\SimonFell\PocketSOAP"; Flags: onlyifdoesntexist
Source: "C:\hctp\share\PocketSoap\psProxy.dll"; DestDir: "{pf}\SimonFell\PocketSOAP"; Flags: onlyifdoesntexist
Source: "C:\hctp\share\PocketSoap\Pockets.bat"; DestDir: "{pf}\SimonFell\PocketSOAP"; Flags: onlyifdoesntexist  //regsvr32  çalışan batch file

(Run)
Filename: "{pf}\SimonFell\PocketSOAP\Pockets.bat"; Description: "{cm:LaunchProgram,PocketSoap Registry işlemi}"; Flags: postinstall skipifsilent unchecked

Dosyaların varlığını konrol etmekten başka bu dll ler registry de kaydedilmiş mi, kaydedilmemişse Pockets.bat ı çalıştırayım istiyorum.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: inno Setup ve ek görevler

Mesaj gönderen sabanakman »

Kullandığım yöntemden basit bir örnek anlatırsam bu belki size başka fikirler verebilir. Kendi örneğimdeki kullanım şekli farklı ama, midas.dll dosyası varsa siliyor ve ondan saonra bu dosyayı kopyalıyor. Siz bunu kendinize uyacak şekilde değiştirebilirsiniz.
Source: midas.dll; DestDir: {sys}; Flags: uninsneveruninstall regserver ignoreversion
Burada midas yüklemesini farklı olarak kullanıyorum. Çünkü zaten regserver parametresi bunu sisteme otomatik kayıt etmektedir. Bu noktadan sonra dosya var mı kontrolü için işleri biraz InnoSetup paketinin script özelliğini kullanarak da sağlayabilirsiniz ama burada sisteme kayıtlı .dll nerede nasıl tutuluyor inceleme yapmadım fakat yazılacak ek bir fonksiyonla dosya kopyalansın veya kopyalanmasın kararı verecek mekanizmayı sağlayabilirsiniz. Mesela Check parametresi ile bu dosyanın kopyalanmasına karar verecek fonksiyon yazılabilir.

Kod: Tümünü seç

Source: midas.dll; DestDir: {sys}; Check: MidasKopyala; Flags: uninsneveruninstall [u]regserver[/u] ignoreversion


[Code]
function MidasKopyala:Boolean;
var DosyaAdi:String;
begin
  DosyaAdi:=ExpandConstant('{sys}\Midas.dll');
  Result:=not FileExists(DosyaAdi) or DeleteFile(DosyaAdi);
  //True ise ilgili dosya işleme alınarak kopyalanmaya çalışılacaktır.
end;
Tabi burada kod biraz baştan savma oldu ama siz ilgili sınıflar sistemde kayıtlı mı, dosyaları var mı şeklinde daha sağlıklı bir kontrol kodu yazabilirsiniz.
En son sabanakman tarafından 28 Ağu 2012 12:27 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: inno Setup ve ek görevler (çözüldü)

Mesaj gönderen varyemez »

Çok teşekkürler. Bu kodlar işimi gördü.
Bu arada birşey daha sorayım. midas.dll in mutlaka windows\system32 klasorunde mi olması lazım? Bunu diğer birçok program kullanabiliyor. bazan da versiyon uyuşmazlığı görülebiliyor..
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: inno Setup ve ek görevler

Mesaj gönderen sabanakman »

Bir ara böyle bir şekilde kullandığımdan aynısını örnek olarak ekledim. Siz bunu değiştirebilirsiniz. Ne de olsa sisteme kayıt edildikten sonra dosyanın bulunduğu yerin fazla bir önemi yok.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla