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.
inno Setup ve ek görevler
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: inno Setup ve ek görevler
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
Re: inno Setup ve ek görevler
Teşekkürler @cozturk , Aşağıdaki gibi birşeyler yaptım ama istediğimi tam karşılamıyor.
Dosyaların varlığını konrol etmekten başka bu dll ler registry de kaydedilmiş mi, kaydedilmemişse Pockets.bat ı çalıştırayım istiyorum.
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
- 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
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.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.
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.Source: midas.dll; DestDir: {sys}; Flags: uninsneveruninstall regserver ignoreversion
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;
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. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: inno Setup ve ek görevler (çözüldü)
Ç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..
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..
- 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
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. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .