Şimdi Ara

Birkaç setup'ı sadece bir exe ile kurdurtmak

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
8
Cevap
0
Favori
165
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba,


    Bilgisayara format attıktan sonra winrar, chrome ve diğer birçok programın setuplarını tek tek kurmaktansa hepsini tek bir program içerisinde toplayıp kurdurtmak istiyorum. Bunu visual studio'dan resimde gösterdiğim şekilde yapabilir miyiz?



    Birkaç setup'ı sadece bir exe ile kurdurtmak



  • yaparsın da bileceğin şey programların sessiz kurulum anahtarlarına bakmak genelde /s parametresi çoğu setupda geçerlidir.

    bir de niye visual studio içinde yani bir batch dosyası bile işini görür


    vs de komut kısmına uygulamanın yolunu yazarsın parametre ile birlikte


    string winrar = "...";

    var process = Process.Start(winrar);

    process.WaitForExit();




    kullanırsın

  • @Gökşen PASLI


    .BAT dosyası ile yapılabilir mi tam bilmiyorum ancak yapmak istediğim şey tam olarak şöyle;


    Ortamda bizim oluşturacağımız yeni .exe dışında her hangi bir program, set-up olmayacak.

    Programı açtığımızda karşımıza yukarıdaki görseldeki gibi seçenekler gelecek ve indirmek istediklerimizi seçtikten sonra seçili olanları bilgisayarımıza kuracak.

  • Raimondex R kullanıcısına yanıt
    Bence .bat dosyası bu işi görür çünkü Windows'ta buna benzer birkaç iş için biz de .bat dosyası kullanıyoruz, yıllardır sorunsuz çalışıyor. Doğru yazmak koşuluyla. .bat oldukça güvenilir bir sistem. Form'daki seçenekler içinse, .bat betiğini parametrik yapıp, formdaki seçenekleri parametrelere aktarırsın.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • @vonderplanitz


    Konuyu .bat dosyası ile çözebilmem için yardımcı olabilir misiniz? .bat dosyası yazmadım daha önce. Google'da araştırdım ancak istediğim konuya çıkacak bir sonuç bulamadım.


    Discord: Raimondex#2870

  • Raimondex R kullanıcısına yanıt
    Google 'da birkaç setup'ı çalıştıran .bat dosyası gibi amaca özel .bat pek bulunmaz, kendiniz yazmalısınız. O aşamadahttps://en.wikibooks.org/wiki/Windows_Batch_Scripting gibi kaynakları incelemeniz gerekebilir.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • örnek uygulama basitçe ; ayraçtır

    ilki uygulama yolu

    ikincisi sessiz kurulum parametresi olacak sen internetten bulacaksın gelende /s dir.

    true false seçili veya değil olması

    dördüncüsü görünen addır

    örnekte Data.txt içeriği exe ile yan yana aynı klasörde olacak

    Kod

    Yığını:
    cleanmgr.exe;/sageset:1;true;Disk Temizleyici calc.exe;/s;false;Hesap Makinesi cmd.exe;/k;true;Komut Satırı


    mainwindow.xaml içeriği

    Kod

    Yığını:
    <Window x:Class="Installer.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:Installer" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Title="Yükleyici" Width="800" Height="450" mc:Ignorable="d"> <Grid> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <ListBox d:ItemsSource="{d:SampleData ItemCount=5}" IsSynchronizedWithCurrentItem="False" ItemsSource="{Binding Datas}" SelectionMode="Extended"> <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> <Setter Property="IsSelected" Value="{Binding Selected}" /> </Style> </ListBox.ItemContainerStyle> <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <CheckBox VerticalContentAlignment="Center" IsChecked="{Binding Selected}"> <Image Source="{Binding Icon}" /> </CheckBox> <TextBlock VerticalAlignment="Center" Text="{Binding AppName}" /> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox> <Button Grid.Row="1" Click="Button_Click" Content="SEÇİLİLERİ KUR" /> </Grid> </Window>



    mainwindow.xaml.cs içeriği


    Kod

    Yığını:
    using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Windows; using System.Windows.Interop; using System.Windows.Media.Imaging; namespace Installer { public class Data : INotifyPropertyChanged { private string appName; private BitmapSource ıcon; private string param; private string path; private bool selected; public event PropertyChangedEventHandler PropertyChanged; public string AppName { get => appName; set { if (appName != value) { appName = value; OnPropertyChanged(nameof(AppName)); } } } public BitmapSource Icon { get => ıcon; set { if (ıcon != value) { ıcon = value; OnPropertyChanged(nameof(Icon)); } } } public string Param { get => param; set { if (param != value) { param = value; OnPropertyChanged(nameof(Param)); } } } public string Path { get => path; set { if (path != value) { path = value; OnPropertyChanged(nameof(Path)); } } } public bool Selected { get => selected; set { if (selected != value) { selected = value; OnPropertyChanged(nameof(Selected)); } } } protected virtual void OnPropertyChanged(string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } public partial class MainWindow : Window { private static readonly IntPtr hwnd = Process.GetCurrentProcess().Handle; public MainWindow() { InitializeComponent(); DataContext = this; Datas = new List<Data>(); foreach (string item in File.ReadAllLines("data.txt")) { Datas.Add(new Data() { Path = item.Split(';')[0], Param = item.Split(';')[1], Selected = bool.Parse(item.Split(';')[2]), AppName = item.Split(';')[3], Icon = IconCreate(item.Split(';')[0], 0) }); } } public List<Data> Datas { get; set; } [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern bool DestroyIcon(IntPtr handle); [DllImport("shell32.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ExtractIcon(IntPtr hInst, string lpszExeFileName, int nIconIndex); public BitmapSource IconCreate(string filepath, int iconindex) { if (filepath != null) { string defaultIcon = filepath; IntPtr hIcon = ExtractIcon(hwnd, defaultIcon, iconindex); if (hIcon != IntPtr.Zero) { BitmapSource icon = Imaging.CreateBitmapSourceFromHIcon(hIcon, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); _ = DestroyIcon(hIcon); icon.Freeze(); return icon; } _ = DestroyIcon(hIcon); } return null; } private void Button_Click(object sender, RoutedEventArgs e) { foreach (Data item in Datas.Where(z => z.Selected)) { Process.Start(item.Path, item.Param).WaitForExit(); } } } }



    < Bu mesaj bu kişi tarafından değiştirildi Gökşen PASLI -- 17 Haziran 2022; 21:25:36 >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.