Yazılım Güncelleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
tears
Üye
Mesajlar: 79
Kayıt: 29 Kas 2004 12:32

Yazılım Güncelleme

Mesaj gönderen tears »

Merhaba,

Şirketimde geliştirdiğimiz yazılımları server paylaşımlarından güncellemek yerine nas cihazlardan güncellemeye karar verdik. Normalde yazılımı kendi yazdığımız basit bir uygulama ile güncelliyorduk. Ancak server üzerindeki paylaşım açık olması gerekliydi. Artık açık paylaşım bırakmak istemiyoruz. Dolayısı ile güncelleme yazılımı çalışınca net use komutu ile nas cihaza login olup dosya kopyalama bitince bağlantıyı gene net use ile kapatmak istiyorum. Normalde bunu dos komutları ile yapabiliyorum. Ancak delphiden beceremedimç :roll: :roll:

Shellexecute ile epey denedim anca başarılı olamadım.

Varmıdır bir fikri olan?
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Yazılım Güncelleme

Mesaj gönderen ertank »

Merhaba,

Çalışmayan kodlarınızı paylaşmanız mümkün müdür?

ShellExecute() normalde bir fonksiyondur. Geriye bir kod çevirir. Sizin aldığınız sonuç kodları ne oldu? Hata var ise anlamını öğrenmek için aşağıdaki gibi bir kod kullanabilirsiniz.

Kod: Tümünü seç

uses
  System.SysUtils,
  ShellApi;

procedure TForm1.Button1Click(Sender: TObject);
var
  Return: Integer;
begin
  Return := ShellExecute(Self.Handle, 'open', 'notepadd.exe', nil, nil, SW_SHOW);
  if Return <= 32 then
    ShowMessage(SysErrorMessage(GetLastError));
end;
tears
Üye
Mesajlar: 79
Kayıt: 29 Kas 2004 12:32

Re: Yazılım Güncelleme

Mesaj gönderen tears »

Kod: Tümünü seç

 
ShellExecute(0, nil, 'cmd.exe', 'net use \\10.0.1.100 /user:deneme deneme /persistent:yes', PChar(TargetFolder), SW_HIDE);
Doğrusu son hali budur.
tears
Üye
Mesajlar: 79
Kayıt: 29 Kas 2004 12:32

Re: Yazılım Güncelleme

Mesaj gönderen tears »

Bu eskiden kullandığımız bat dosyası.

Kod: Tümünü seç

NET USE \\10.0.1.100 /user:deneme deneme /PERSISTENT:YES
COPY \\10.0.1.100\share\ARAC_TAKIP c:\ARACLAR\
NET USE /DELETE \\10.0.1.100\IPC$
Ben ise artık kendi yazılımızla bu işi yaptırmak istiyorum.

Kod: Tümünü seç

procedure TfrmMain.CopyDirectory(SourceFolder, TargetFolder,NodeFolder: String);
var
  SearchFile: TSearchRec;
  UserName: String;
  PassWord: String;
begin
  ShellExecute(0, nil, 'cmd.exe', 'net use \\10.0.1.100 /user:deneme deneme /persistent:no', PChar(TargetFolder), SW_SHOWNORMAL);

  if NodeFolder <> '' then
  begin
    SourceFolder := SourceFolder + '\' + NodeFolder;
    TargetFolder := TargetFolder + '\' + NodeFolder;
  end;

  if FindFirst(SourceFolder + '\*.*' , faAnyFile, SearchFile) = 0 then
  begin
    repeat
    	try
        if SearchFile.Attr = faDirectory then
        begin
          if (SearchFile.Name <> '.') and (SearchFile.Name <> '..') then
          begin
            CreateDir(TargetFolder + '\' + SearchFile.Name);
            CopyDirectory(SourceFolder, TargetFolder , SearchFile.Name);
          end;
        end else if (SearchFile.Name <> ThumbsFileName) then
        begin
          try
          	CopyFile(SearchFile.Name, SourceFolder, SearchFile.Name, TargetFolder);
          except          
          end;
        end;
      finally
        ShellExecute(0, nil, 'cmd.exe', 'net use /DELETE \\10.0.1.100\IPC$', PChar(TargetFolder), SW_HIDE);
      end;
    until (FindNext(SearchFile) <> 0);

    FindClose(SearchFile);
  end;

end;
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Yazılım Güncelleme

Mesaj gönderen SimaWB »

ShellExecute ile eskiden kullandığınız bat dosyasını çalıştırabilirsiniz:

Kod: Tümünü seç

ShellExecute(Application.Handle, nil, PChar('bat dosyasının tam yolu'), nil, nil, SW_MAXIMIZE);
There's no place like 127.0.0.1
Cevapla