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
-
.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.
-
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ı > -
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
-
Google 'da birkaç setup'ı çalıştıran .bat dosyası gibi amaca özel .bat pek bulunmaz, kendiniz yazmalısınız. O aşamada gibi kaynakları incelemeniz gerekebilir.en.wikibooks.orgWindows Batch Scripting - Wikibooks, open books for an open worldhttps://en.wikibooks.org/wiki/Windows_Batch_Scripting
< 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
cleanmgr.exe;/sageset:1;true;Disk Temizleyici calc.exe;/s;false;Hesap Makinesi cmd.exe;/k;true;Komut SatırıKod
Yığını:mainwindow.xaml içeriği
<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>Kod
Yığını:mainwindow.xaml.cs içeriği
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(); } } } }Kod
Yığını:
< Bu mesaj bu kişi tarafından değiştirildi Gökşen PASLI -- 17 Haziran 2022; 21:25:36 >
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X