İnnoSetup ile OS'a göre kurulum

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

İnnoSetup ile OS'a göre kurulum

Mesaj gönderen NewMember »

Arkadaşlar yapmak istediğim şu.Programımı Program Files te bir klasöre kurduruyorum.Ama Vista da bazı sorunlar oluşuyor.OS Vista ise programımı C de bir klasöre kurdurucam.yani XP ise program Files Vista ise C sürücüsü kök dizini.

Bunu nasıl yapabiliriz bir fikri olan varmı?
cevap verecek arkadaşlara şimdişden teşekkürler.
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

Şarta göre dizin belirtmeyi bulduk:Sıra OS un XP mi Vistamı olduğunu anlayacak script kodunda.Yardım edecek yokmu?
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Bende konuyla ilgiliyim ama cevabı yeni buldum. Denemedim ama yardım dosyasında GetWindowsVersion,GetWindowsVersionEx ve GetWindowsVersionString fonksiyonları ile mevcut sistemin versiyonunu okuyabiliyorsun. GetWindowsVersionEx detaylı bir okuma yapıyor bunu inno setup çevrimiçi yardımından bulabilirsin (IsTool değil :) bir çok kere inno yardımı diye yanlışlıkla burayı açmışımdır). Yapman gereken gelen bilgideki .Major değerinin vista karşılığını bulmak. WinXP için bu değer 5 olduğuna göre vista için 6 olsa gerek. İstersen bu değeri vista sistemde MsgBox(GetWindowsVersionString,mbConfirmation, MB_OK); kodunu yazarak görebilirsin. Versiyon numarası tahminim yanlış ise doğrusunu buradan yazabilirsin.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

sabanakman yazdı:Bende konuyla ilgiliyim ama cevabı yeni buldum. Denemedim ama yardım dosyasında GetWindowsVersion,GetWindowsVersionEx ve GetWindowsVersionString fonksiyonları ile mevcut sistemin versiyonunu okuyabiliyorsun. GetWindowsVersionEx detaylı bir okuma yapıyor bunu inno setup çevrimiçi yardımından bulabilirsin (IsTool değil :) bir çok kere inno yardımı diye yanlışlıkla burayı açmışımdır). Yapman gereken gelen bilgideki .Major değerinin vista karşılığını bulmak. WinXP için bu değer 5 olduğuna göre vista için 6 olsa gerek. İstersen bu değeri vista sistemde MsgBox(GetWindowsVersionString,mbConfirmation, MB_OK); kodunu yazarak görebilirsin. Versiyon numarası tahminim yanlış ise doğrusunu buradan yazabilirsin.
@sabanakman teşekkürler sonucu buradan yazıcam....
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Mesaj gönderen NewMember »

@sabanakman iki kez teşekkür ederim.
1.Sorunumun çözülmesine yardımcı olduğun için.
2.Inoosetupı genelde istool ile kullandığımdan bu tarz bir kodlama mantığıyla olaya bakmamı sağladığın için.Sanırım bundan sonra farklı sorunlar için zoırlanmıycam.

Çözüm ise şöyle.

DefaultDirname bölümünde dizin vermek yerine değişken simi veriyoruz.

Kod: Tümünü seç

DefaultDirName={code:ProgramDizinim}\Program Klasörümüzün Adı
Sonra da;
Code bölümüne aşağıdaki kodu yazıyoruz ve derliyoruz.Xp ve Win989 de Program Files, Vista!da kök dizine kuruluyor.Tabii farklı amaçlar içinde kullanılabilir.

Kod: Tümünü seç

function ProgramDizinim(Param: String): String;
var
  Version: TWindowsVersion;
  S: String;
begin
   GetWindowsVersionEx(Version);
   //Windowsun Major numarasını alalım.
  if (Version.Major > 5)
then
  begin
  //Windowsun Major numarası 5 ten büyükse Vista'dır.
  //O zaman program kök dizine kurulsun.
  //Ama kullanıcı değiştirirse ne yapçaz onu bilemiyom.
   Result := ExpandConstant('{sd}');
  end
  else
  begin
  //Eğer Vista değilse Program Files dizinine kurulsun.
  Result := ExpandConstant('{pf}');
  end;
end;
herkese kolay gelsin...
cozturk
Üye
Mesajlar: 484
Kayıt: 15 Haz 2005 05:22

Mesaj gönderen cozturk »

Vistada programlar standart olarak "Standart user " yetkisiyle başlatılıyormuş. bu durum tam yetkili olarak başlaması gereken programımızı engelliyor. Program çalışıyor gibi görünsede işlevi yok hiç çalışmıyor.

Program kurulduktan sonra "Bilgisayar yöneticisi" olarak başlatılmasını istiyorum. gerekirse şifre sorsun. Bunu nasıl yaptırtabilirim?

"sağ tıklayıp farklı kullanıcı olarak çalıştır" diye rica etmek hoş değil. Ozaman sorun kalmıyor.

Programı bir defa tam yetki ile başlatayım o kendini registrye yazsın artık hep "Bilgisayar Yöneticisi yetkisiyle" başlatılmış gibi olsun. Bunu nasıl yaptırabilirim?

Inno setup içinde böyle bir seçenek var mı yoks ben mi göremedim bilmiyorm. Başka setup veya script , delphi kod da işimi görür. yeterki uygulamamı "administrator" olarak başlatayım. herzaman bu şekşilde başlayabilsin.

Login öncesi başlasa da olur.
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

gözünü seveyim unix in linuxun ya. bir nitelik verirsin progrma bir komutla. sadece o komut çalışsınca root yetkisinie sahip olur. araştırmak lazım bunu ama ben tahmin ediyorum sonucu

"geçici olarak root yetkisine sahip olmayı ilk kez uyguladık" diyecekler bizim analamamızı bekledikleri ise şu " geçici olarak root yetkisine sahip olmayı ilk biz keşfettik"
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
cozturk
Üye
Mesajlar: 484
Kayıt: 15 Haz 2005 05:22

Mesaj gönderen cozturk »

Inno setup güncel sürümde varmış sanırım.
Cevapla