KATILIMSIZ PROGRAM HAZIRLAMA NOTLARI
1. Basit katılımsız kurulum dosyaları oluşturma cmd dosyaları ve winrar:
Bu işi cmd ya da bat uzantılı MS Dos dosyalarıyla yapmak mümkündür.
MSI uzantılı kurulum dosyaları başka bir programın yardımına gerek duyulmaksızın DOS komutlarından oluşturulan bir
cmd file ile katılımsız kurulabilirler.
Bunun yapılabilmesi için öncelikle kurulumu katılımsız hale getirilecek MSI dosyası ve varsa yanındaki diğer
dosyalar, bizim hazırlayacağımız cmd uzantılı dosya ile aynı klasörde yer almalıdır.
cmd uzantılı dosya hazırlamak için herhangi bir metin dosyasını istediğimiz klasöre kopyalayarak içindeki metni
silmek ve uzantısını txt'den cmd'ye çevirmek yeterlidir.
Böylece mesela kur.cmd adlı bir dosya elde ederiz.
cmd uzantılı dosyaya istediğimiz komutları yazmak için üzerine geldikten sonra uygulama tuşuna basarak düzenle
komutunu kullanmamız gerekir. Böyle yapınca dosya not defteri ile açılırBir kurulum dosyasını katılımsız hale
getirebilmemiz için o kurulum dosyasının katılımsız parametresini bilmemiz gerekir.
Bu parametreler komuttan sonra bir boşluk verilip bölü işareti ve arkasına bazı harfler konularak yazılırlar.
MSI dosyalarının katılımsız kurulum parametresi genellikle qb olur. exe uzantılı kurulum dosyalarının katılım
parametreleri ise daha farklıdır. Exe'lerde genelde s parametresi vardır. Ama Jaws'da katılımsız parametreleri
verse de cmd ile otomatik kurulum olmuyor, autohit programının ek katkısı gerekiyor.
MSN messinger'in kurulum exe dosyasının katılımsız parametresi aşağıdaki gibidir ve kesinlikle cmd dosyası
hazırlayarak alttaki komutla kolayca kurdurulabilir:
start /wait messinger.exe /-y /q /r:n
Her MSI dosyasının Katılım parametresini aşağıda verilen örnek cmd dosyasındaki soru işaretiyle biten ilk bir kaç
satırı yazıp o cmd dosyasını çalıştırarak öğrenebiliriz.
cmd dosyalarıyla lisans sorunu olmayan bütün MSI uzantılı kurulum dosyaları katılımsız hale getirilebilirler. Bu
katılımsızlığın anlamı şudur: Kurulum sırasındaki bütün ileri düğmeleri, onay kutuları, lisans kabul etmeler
kendiliğinden yapılır, bize sorulmaz.
Ama eğer kurulumda serial number girme ya da keygen kullanımı gerekiyorsa cmd dosyaları yeterli gelmez. O zaman
buna ilave olarak autohit gibi otomatik olarak klavye tuşlarını girip yönlendiren bir programın katkısı gerekir.
Yani cmd dosyalarıyla autohit programını birbirine katkıda bulunacak biçimde kullanırız.
MSI dosyalarındaki /qb parametresi kurulum sırasında pencereleri göz önüne getirdiğinden yüzde 3, yüzde 5 gibi
ilerleme durumunu jaws bize okur. Oysa yine MSI dosyaları için /qn parametresini kullanırsak bu pencereler gizlenir
ve dolayısıyla jaws ilerleme yüzdesini de söylemez. Tabi bu tercihi kullanırsak programın kurulmadığını ve takılıp
kaldığını düşünerek tuşlara basabiliriz ve bu da otomatik kurulumu bozabilir. Bu nedenle yine /qb parametresi
tercih edilmelidir.
Bir cmd dosyasına start wait ile başlayan birden fazla MSI kurulum dosyasını alt alta yazarsak aynı cmd dosyasını
enterladığımızda arka arkaya bir sürü programı katılımsız olarak kurdurabiliriz.
Sonuçta cmd dosyasıyla MSI kurulum dosyaları winrar sıkıştırma programıyla paketlenip bir exe haline getirilir ve
bu exe dosyası enterlandığında hiç el sürmeden kurulum gerçekleştirilebilir.
Şimdi biz öncelikle bir örnek cmd dosyası yazalım ve sonra da bunu winrarla özel olarak exe haline getirmeye
bakalım:
Örnek bir cmd dosyası:
@echo off
;mesajları gizler
title GVZ Kurulumu
; Başlığımız olur ve gereksiz mesajları gizler
start netokur.msi /?
;Buraya kadar yazılmış cmd dosyası aynı klasörde bulunan ve dosyada anılan MSI dosyasının katılımsız parametresini
verir.
echo.
;bilgi yazmak üzere boş satıra iner
echo GVZ Net Okur kuruluyor...
echo Net okur kurulurken lutfen bekleyiniz
;Bu mesajlarda Türkçe karakter yasaktır, ama ara verilebilir.
start /wait netokur.msi /qb
; net okurun kurulumuna başla ve bekle. görüldüğü gibi parametreler boşluktan sonra bölü işareti ve birleşit olarak
parametre harfleri biçiminde yazılıyor.
Winrar'la paket hazırlama aşaması:
anlatım winrarın 3.80 veya üzeri sürümler baz alınarak yapılmıştır. alt sürümlerde küçük farklar olsada mantık
aynıdır.
Yukarıda cmd dosyamızı hazırladık. Şimdi de bu dosyayı MSI kurulum dosyası ve varsa diğer setup file'larla birlikte
bir exe paketi yapmayı anlatalım:
Önce MSI dosyası, varsa diğer kurulum dosyaları ve cmd dosyamızın topluca bulundukları klasörün üstünde değil
içinde iken bütün dosyaları seçelim.
Aplication yani uygulama tuşuna basıp arşive ekle diyelim, yani bu komutu enterlayalım.
Tablarla sıkıştırma düzeyine gidip en iyi'yi tercih edelimki paket küçük olsun.
Tablarla devam edip spx arşivi oluştur onay kutusunu işaretleyelim.
ctrl tab tuş kombinasyonuyla geçeceğimiz pencereden, sfx seçenekleri düğmesini bulup tıklayalım.
Tabla geçip çıkardıktan sonra çalıştır edit alanına çalıştırılacak olan dosyamızın adını yani kur.cmd yazıyoruz.
Buraya cmd dosyasının adı yerine komut olarak:
netokur.msi /qb
yazmak da mümkündür winrar bu komutu tanır.
ctrl+tab basıp modlar sayfasına geçelim:
Dosyaları geçici klasöre aç onay kutusunu işaretleyelim.
Böylece ortalık çöp dosyalarla dolmamış olur.
Tabla devam. sessiz mod ikinci seçenek olan başlangıç iletişim penceresi atla diyen seçeneğe getiriyoruz.
ancak dosyalarımızın boyutu 10mb dan küçük ise üçüncü seçenek olan tümünü gizle seçeneği daha uygun olacaktır. ama
10mb dan büyük dosyalara kesinlikle ikinci seçeneğin seçilmesi önerilir.
Böylece kurulumda yüzdenin söylenmesi sağlanır.
ctrl+tabla dosyaları çıkar ve değiştir sayfasına geliyoruz.
Bir tab basarak geldiğimiz alanda tüm dosyaların üzerine yaz seçeneğini tercih edelim.
ctrl+tab basarak spx başlık ve metin seçeneklerine geliyoruz.
spx başlığı yazma alanına Türkçe karakter ve boşluk de kullanmak serbest olmak kaydıyla örneğin:
Gvz kurulumu hazırlanırken, lütfen bekleyiniz... yazıyoruz.
Enter tuşuna basıyoruz.
Aşağıdaki pencereden tamamı tıklayıp sıkıştırmayı başlatıyoruz.
Oluşan exe dosyası otomatik kurulumu gerçekleştirir.
2. Autoit Programı
Bu program jaws script'i yazmaya benzer. Bilgisayarda ardarda yapılacak tuş ve tuş grubu basma işlerini insan eli
yerine bilgisayara yaptırmayı ve böylece çok yapılan çok sayıda tuş basmalı işlemlerde zaman kazanmayı sağlar. CMD
dosyalarıyla kurulamıyan, lisanslama işlemi yapılan programların kurulması cmd dosyalarına autohit'in yardım
sağlamasıyla katılımsız olarak kurulum haline getirilebilirler.
Autohit programı bilgisayarımıza kurulur. Bu programın işlediği dosyaların uzantısı au3'tür.
Mesela kur.au3 gibi boş bir metin dosyası içine yazacağımız komutlarla autohit kurulu bir bilgisayarda ard arda tuş
basışlarını bilgisayarımıza yaptırabiliriz. Bunları bir şekilde exe haline de getirince o exe'yi tıklayarak
kendiliğinden işlemler yaptırabiliriz.
Örnek çalışma:
Bir klasöre deneme.txt, kur.cmd ve kur.au3 adında üç adet boş metin dosyası atalım.
Şİmdi cmd ve a3u dosyalarımızı kullanarak bu boş deneme.txt dosyasına kendiliğinden bir şeyler yazdıracak bir a3u
dosyası hazırlayacağız.
kur.cmd dosyasını üzerindeyken düzenle deyip not defteriyle açalım ve aşağıdaki komutları girelim.
@echo off
; mesajları göstermesin komutu
start deneme.txt
; Deneme.txt dosyasını çalıştır anlamındaki komut.
Şimdi kur.au3 dosyasını birlikte aç seçeneğini kullanarak, not defteriyle açtık.
Autohit programında dosya çalıştırma komutu run'dur.
Tuş basma komutu ise gönder anlamına gelen İngilizce kelime olan, send'dir.
Şimdi kur.a3u dosyasına aşağıdaki komutları girelim.
Önemli not: a3u autohit dosyalarında komutlar arasında hiç bir zaman boşluk karakteri kullanılmaz. Ancak tırnak ve
parantez işaretleri arasında boşluk karakteri kullanılabilir.
Komutların hemen altındaki satırlara noktalı virgülden sonra komutların anlamları yazılmıştır.
run("kur.cmd")
; Kur.cmd dosyasını çalıştır anlamına gelen komut.
; kur.cmd'nin içinde de deneme.txt'yi çalıştır komutu olduğundan kendiliğinden deneme.txt dosyası açılacaktır.
; Şimdi jaws'un sanal PC imlecini ctrl+insert+w basarak aktifleştirip en tepedeki deneme.txt not defteri başlık
yazısını panoya kopyalayalım.
winwaitactive("deneme.txt - Not Defteri")
; Bu pencereyi bekle ve aktive et.
kelimeler arasında boşluk olabilir ama tırnak işaretlerinin önünde ve sonunda kesinlikle boşluk olmamalıdır.
; Şİmdi ismimizi deneme.txt dosyasına yazdıralım.
send("Kerim Altınok")
;Kerim Altınok yazısını önceki komutta açılan dosyanın içine yazdırır.
send("{enter}")
; Bu komut açılmış metin dosyasında enter tuşuna bastırır. Dikkat edecek olursak sayfaya yanlışlıkla önceki komutta
olduğu gibi enter kelimesini yazdırmayıp, programın enter yazısını tuş olarak algılaması için enter kelimesini
büyük parantezler içine aldık. Bu parantezler ctrl+alt+7 ve 0 ile çıkarılan left ve right brace'lerdir.
send("bu da ikinci satır")
; Üstteki enter basışından sonra inilen satıra bu metni yazdırdık.
send("{tab}{tab}{enter}")
; iki defa tab bir defa da enter bastırdık. Dikkat edilirse aynı send komutuyla birden fazla tuşa bastırabiliyoruz.
Yapılacak şey parantez ve tırnakla açılıp yine tırnak ve parantezle kapanan kümenin ortasına her tuşu büyük
parantezlerin arasına ayrı ayrı ama bitişik olarak almaktır.
; boşluk için space, yukarı yön tuşu için up, aşağı için down kelimeleri kullanılır.
send("!{d}")
; Ünlem işareti alt tuşunu basılı tutar, sonrasındaki d tuşu da alt+d tuş bileşimiyle mesela dosya menüsüne girmeyi
sağlayabilir.
send^("{c}")
; üstteki komutta Shift+3 ile çıkarılan carat işareti ctrl tuşunun basılı tutulduğunu ifade eder. Sonraki c tuşu
ise ctrl+c ile kopyalama yapmayı sağlıyor.
winwaitactive komutuyla sihirbaz başlıklarının tanıtıldığını yukarıda söylemiştik. şimdi bu konunun üzerinde biraz
duralım. örneğin bir programın katılımsızını hazırlıyorsunuz. fakat programın sihirbaz başlığı hep aynı. mesela
jaws kurulumu, nero install package gibi. o zaman ne yapacaksınız? program kuruluyorken script yanlış yerlerde
yanlış tıklamalar yapmayacakmı? o halde bizde sihirbazın ilk satırını değil ikinci satırını dikkate aldıracağız.
yani aşağıdaki örnekte olduğu gibi yapacağız.diyelimki jaws kurduruyoruz.
ilk satır:
jaws kurulumu.
ikinci satır:
jaws kurulumuna hoşgeldiniz.
mesela karşılama sihirbazımız bu şekilde olsun. bizde insört ctrl w ile jaws yardımıyla bu satırları elegeçirmiş
olalım. ve ikinci satırı kullanmaya karar verelim. o zaman ikinci satırı scripte aşağıdaki gibi tanıtırızki
sistemin kafası karışmasın.
winwaitactive("","jaws kurulumuna hoşgeldiniz.")
görüldüğü üzere ilk satırı boş geçmek için "", koyduk. eğer istersek onunda içini doldurabiliriz. aşağıdaki örneği
dikkatle inceleyiniz.
winwaitactive("jaws kurulumu.","jaws kurulumuna hoşgeldiniz")
ancak bu yöntem sağlıklı değildir. ben o "", işaretinin mantığı anlaşılsın diye buraya ekleme gereği duydum.
yazacağınız send komutu satırlarının arasına sihirbaz tanıtmanız kesinlikle önerilir. aşağıya hayali bir program
için bir örnek yazalım. programımızın adı körişi olsun. ileri düğmeleride l harfiyle tıklansın. kurulumu
başlatıyoruz.
run("körişi.exe")
böylece setup u çağırmış olduk.
winwaitactive("körişi kurulumu")
böylece körişi programının setup dosyası çalıştığında gelen pencerenin script tarafından beklenmesini ve aktif
edilmesini sağladık.
send("!{l}")
böylece alt l tuşlarına bastırarak ileri komutu vermiş olduk. yani ha tablarla ileriyi bulup enter veya space
basmışsınız, ha alt tuşuyla birlikte l basmışsınız aynı işlemdir. biz bunu scripte yaptırmış olduk. eğer yukarıdaki
winwaitactive komutunu yazmamış olsaydık run komutundan hemen sonra bir saniyeden daha az sürede program alt l
basacaktı ve kurulumu başlatamayacaktık. o nedenle winwaitactive hayati önem taşıyor. diyelimki ilk sihirbazdan
sonra sözleşme ekranı geliyor olsun ve pencere şu şekilde olsun.
1. satır: körişi kurulumu...
2. lütfen lisans koşullarını onaylayınız.
o zaman şu komutu verelim.
winwaitactive("","lütfen lisans koşullarını onaylayınız.")
böylece ikinci sihirbazın gecikmesi halinde yaşanacak olası sorunun önüne geçmiş olduk. ve diyelimki sozleşme bir
tab basınca ve yukarı ok basınca onaylanıyor. o zaman şu komutla devam ettiririz.
send("{tab}{up}")
sözleşmeyi kabul ettirmiş olduk. ve diyelimki sözleşmeyi kabul ettikten sonra alt l ile ulaştığımız ileri tuşu
hemen etkin olmuyor. iki saniye bekledikten sonra aktif oluyor. o zaman iki saniye tampon süre koyarız. bu sistemde
saniyeler değil mili saniyeler baz alınır. o yüzden bin mili saniye bir saniye olarak programa şu şekilde yazılır.
sleep(1000)
bir şey dikkatinizi çektimi? herzaman parantezden sonra tırnak işareti koyardık ama mevzubahis sayılar olunca yani
sleep komutundan sonra parantez içine tırnak işareti konmaz. sleep uyumak demektir. mesela bir dakika bekleme için
sleep(60000)
şeklinde yazılır. evet konumuza dönelim ve
send("!{l}")
diyerek ileri tuşunu tıklatıp devam edelim. ve bu kezde sihirbazımız şu şekilde olsun.
1. körişi kurulumu.
2. lütfen kurulum türünü belirleyiniz.
bu sihirbazıda şöyle gözterelim scripte;
winwaitactive("","lütfen kurulum türünü belirleyiniz.")
ve diyelimki buradada tipik alt
t ve custom alt c düğmeleri olsun. o zaman tipik düğmesini seçmek için şunu yazarız.
send("!{t}")
bu winwaitactiveyi sadece başa yazıp ortaya yazmadanda sonuç alabilirsiniz. ancak sağlıklı ilerleme için şart
olmasada winwaitactivenin her sihirbazın önüne gelmesi önerilir. tipik düğmesinide seçtik ve diyelimki kurulum
başladı. son sihirbazı geldiğinde yine pencerenin resmini jaws a insört ctrl w ile çektirelim ve diyelimki ikinci
satır yükleme başarıyla tamamlandı olsun. ve son tuşunada alt s ile basılsın. o zaman şöyle yazarız.
winwaitactive("","yükleme başarıyla tamamlandı.")
send("!{s}")
bu şekilde kurulumu tamamlamış olduk. şimdi sıra geldi kur.au3 dosyasını kur.exe haline getirmeye... zira au3
dosyası sadece autoit programının kurulu olduğu bilgisayarlarda çalışır. halbuki exe haline gelirse heryerde
çalışır. windows7 de dahil. kur.au3 dosyasına sağ tıklanır ve comple scritp seçeneği tıklanır. hemen au3 dosyasının
civarına bir kur.exe dosyasının yerleştiğini görürsünüz. bu exe dosyasıyla körişi.exe dosyasınıda yukarıda
anlatıldığı üzere winrar ile paketlediğinizde elinizde güzel bir katılımsız körişi programı olacak ve tek tıkla
kurulacak. hatta katılımsız windows a gömülebilecek. şimdi artık autoit programının mantığını anlamış olduğunuzu
varsayarak yukarıda geçmemiş kodları aşağıya sırasıyla yazıyorum. bunları ve daha fazlasını programın yardım
penceresinde detaylıca bulabilirsiniz.
mouseclick
mouse tıklamaları yaptırır. mesela sol fare tıklatalım.
mouseclick("left")
controlclick
düğme seçer. mesela beş numaralı düğmeyi seçtirelim
controlclick("","","tButton5")
böylece beş numaralı düğmeyi seçtirmiş olduk. bu konuyu biraz açarsak, autoit programı kendince her düğmeye bir
numara verir. ve klavye ile tuşlanması mümkün olmayan bu düğmeleri numarasıyla belirtip mouse ile tıklatabiliriz.
öncelikle autoit programının başlattaki menülerinden autoit window info menüsünü enter basıp açarız. bu pencere
bütün pencerelerin üzerinde duracağından imlec takibinde jaws a zorluk çıkarır. o nedenle masa üstünün uygun bir
yerine taşırız. sonra imleci tıklanacak düğmeye götürürüz. jaws imleciyle gidilmesi zorunludur. pc imlecine
geçmeden alt tablarla autoit programından açtığımız o window info penceresine geçeriz ve tablarla button veya
istance diye bize verilen sayıyı tesbit ederiz. controlclick komutunada pencere yazılması şart olmasada adettendir.
örneğin
controlclick("","körişi lisans koşulları","tButton3")
gibi.
scripte dosya kopyalatıp sildirmekte mümkündür. örneğin program files içinden ali.exe dosyasını sildirecek olalım.
filedelete("ali.exe",@programfilesdir & "\")
bu kezde ali dosyası program files klasöründeki veli klasöründe olsun.
filedelete("ali.exe",@programfilesdir & "\veli\")
aynı yöntemle delete yerine copy yazarak kopyalama yaptırmakta mümkündür. örneğin veli klasörüne crack dosyası atıp
çalıştıralım ve programı lisanslayalım.
filecopy("crack.exe",@programfilesdir & "\veli\")
run(@programfilesdir & "\veli\crack.exe")
hernekadar crack ten söz etmişsekte mantık anlaşılması amacıyla olup illegal program kullanımını kesinlikle
önermiyoruz. katılımsız program kurulumunda kullanılan bir programda repackager programıdır. ancak oluşturduğu
katılımsız programlar çokta sağlıklı olmadığından kullanmıyor ve önermiyoruz.
yazı kerim altınok ve mustafa doğan işbirliğiyle hazırlanmıştır.
Yorum ekle