Hallo,
ich habe mir folgendes Projekt rausgesucht : Ich programmiere ein Installer, der je nachdem welche Programme ich auswähle, diese dann auch nacheinander installieren soll. Auswählen kann man die Programme über Checkboxen. Prinzip ist klar, nur die Programme deren Checkbox ausgewählt wurde, sollen installiert werden. Die Pfade zu den jeweiligen .exe Dateien liegen in einer von mir erstellten Textdatei. Mein Programm soll alle 10 Pfade auslesen, sie in verschiedene Strings abspeichern und je nach Auswahl in diesem Pfad die Installationsdatei starten. Ich habe allerdings folgendes Problem: Um mir viele verschiedene Pfade zu vermeiden habe ich alle 10 .exe Dateien in einen Ordner kopiert, d.h. je nach Programm ist im Pfad nichts anders, außer der Dateiname. Bei Origin und Opera funktioniert alles einwandfrei, möchte ich aber Steam oder etwas anderes installieren kommt eine Exception. Ich hab schon einiges versucht, das kuriose : verwende ich bei der Opera Checkbox den Pfad von z.b. Steam klappt auch das nicht mehr, ich bekomme meine eigene Fehlermeldung angezeigt. Nur Opera und Origin können gestartet werden bei allen anderen kommt eine Exception. Habe ich vielleicht irgendwas übersehen oder falsch gemacht? und hat Jemand eine Idee wie ich die 10 Checkboxen nicht nur mit Millionen von if-Anweisungen programmieren kann? Es sind ja bei 2 Checkboxen schon 3 if-Anweisungen
Ich lade noch ein Bild vom fertigen Programm hoch, sowie von der Textdatei und dem Ordner, indem alle exe dateien liegen
Hier mein Quellcode :
ich habe mir folgendes Projekt rausgesucht : Ich programmiere ein Installer, der je nachdem welche Programme ich auswähle, diese dann auch nacheinander installieren soll. Auswählen kann man die Programme über Checkboxen. Prinzip ist klar, nur die Programme deren Checkbox ausgewählt wurde, sollen installiert werden. Die Pfade zu den jeweiligen .exe Dateien liegen in einer von mir erstellten Textdatei. Mein Programm soll alle 10 Pfade auslesen, sie in verschiedene Strings abspeichern und je nach Auswahl in diesem Pfad die Installationsdatei starten. Ich habe allerdings folgendes Problem: Um mir viele verschiedene Pfade zu vermeiden habe ich alle 10 .exe Dateien in einen Ordner kopiert, d.h. je nach Programm ist im Pfad nichts anders, außer der Dateiname. Bei Origin und Opera funktioniert alles einwandfrei, möchte ich aber Steam oder etwas anderes installieren kommt eine Exception. Ich hab schon einiges versucht, das kuriose : verwende ich bei der Opera Checkbox den Pfad von z.b. Steam klappt auch das nicht mehr, ich bekomme meine eigene Fehlermeldung angezeigt. Nur Opera und Origin können gestartet werden bei allen anderen kommt eine Exception. Habe ich vielleicht irgendwas übersehen oder falsch gemacht? und hat Jemand eine Idee wie ich die 10 Checkboxen nicht nur mit Millionen von if-Anweisungen programmieren kann? Es sind ja bei 2 Checkboxen schon 3 if-Anweisungen
Ich lade noch ein Bild vom fertigen Programm hoch, sowie von der Textdatei und dem Ordner, indem alle exe dateien liegen



Hier mein Quellcode :
Java:
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.*;
import javax.swing.JOptionPane;
import javax.swing.DefaultListModel;
import javax.swing.UIManager;
import java.awt.Color;
public class Installer extends JFrame {
private JPanel contentPane;
String path1;
String path2;
String path3;
String path4;
String path5;
String path6;
String path7;
String path8;
String path9;
String path10;
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (Throwable e) {
e.printStackTrace();
}
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Installer frame = new Installer();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Installer() {
setBackground(Color.CYAN);
try
{
FileReader fr = new FileReader("C:/Users/The5thBluesky/Desktop/Path.txt");
BufferedReader br = new BufferedReader(fr);
path1 = br.readLine();
System.out.println(path1);
path2 = br.readLine();
System.out.println(path2);
path3 = br.readLine();
System.out.println(path3);
path4 = br.readLine();
System.out.println(path4);
path5 = br.readLine();
System.out.println(path5);
path6 = br.readLine();
System.out.println(path6);
path7 = br.readLine();
System.out.println(path7);
path8 = br.readLine();
System.out.println(path8);
path9 = br.readLine();
System.out.println(path9);
path10 = br.readLine();
System.out.println(path10);
br.close();
}
catch (IOException ex)
{
JOptionPane.showMessageDialog(null, "Das ging wohl schief");
}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 600, 564);
contentPane = new JPanel();
contentPane.setBackground(new Color(245, 255, 250));
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JTextPane txtpnDiesesProgrammWird = new JTextPane();
txtpnDiesesProgrammWird.setEditable(false);
txtpnDiesesProgrammWird.setText("Dieses Programm wird dazu verwendet, um nach einer Auswahl an Programmen, diese zu installieren. W\u00E4hlen sie dazu unten einfach die Programme aus die sie installieren m\u00F6chten und klicken sie dann auf INSTALL.");
txtpnDiesesProgrammWird.setBounds(37, 12, 460, 58);
contentPane.add(txtpnDiesesProgrammWird);
JLabel lblOperaInstall = new JLabel("Opera wird jetzt installiert");
lblOperaInstall.setBounds(236, 302, 199, 14);
contentPane.add(lblOperaInstall);
JLabel lblOriginInstall = new JLabel("Origin wird jetzt installiert");
lblOriginInstall.setBounds(236, 337, 147, 14);
contentPane.add(lblOriginInstall);
JCheckBox checkbxOrigin = new JCheckBox("Origin\r\n");
checkbxOrigin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (checkbxOrigin.isSelected()){
lblOriginInstall.setVisible(true);
}
else
{
lblOriginInstall.setVisible(false);
}
}
});
checkbxOrigin.setBounds(37, 333, 97, 23);
contentPane.add(checkbxOrigin);
JCheckBox checkbxOpera = new JCheckBox("Opera");
checkbxOpera.setForeground(new Color(0, 0, 0));
checkbxOpera.setBackground(new Color(0, 0, 0));
checkbxOpera.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (checkbxOpera.isSelected()){
lblOperaInstall.setVisible(true);
}
else
{
lblOperaInstall.setVisible(false);
}
}
});
checkbxOpera.setBounds(37, 298, 97, 23);
contentPane.add(checkbxOpera);
JCheckBox checkbxArduino = new JCheckBox("Arduino IDE");
checkbxArduino.setBounds(37, 268, 104, 18);
contentPane.add(checkbxArduino);
JCheckBox checkbxCCleaner = new JCheckBox("CCleaner");
checkbxCCleaner.setBounds(37, 238, 104, 18);
contentPane.add(checkbxCCleaner);
JCheckBox checkbxDevC = new JCheckBox("Dev- C++\r\n");
checkbxDevC.setBounds(37, 208, 104, 18);
contentPane.add(checkbxDevC);
JCheckBox checkbxGeogebra = new JCheckBox("GeoGebra");
checkbxGeogebra.setBounds(37, 178, 104, 18);
contentPane.add(checkbxGeogebra);
JCheckBox checkbxMicrosoft = new JCheckBox("Microsoft Office 365");
checkbxMicrosoft.setBounds(37, 148, 136, 18);
contentPane.add(checkbxMicrosoft);
JCheckBox checkbxSteam = new JCheckBox("Steam");
checkbxSteam.setBounds(37, 118, 104, 18);
contentPane.add(checkbxSteam);
JCheckBox checkbxTeamspeak = new JCheckBox("Teamspeak");
checkbxTeamspeak.setBounds(37, 368, 104, 18);
contentPane.add(checkbxTeamspeak);
JCheckBox checkbxWinRAR = new JCheckBox("WinRAR");
checkbxWinRAR.setBounds(37, 398, 104, 18);
contentPane.add(checkbxWinRAR);
JLabel lblTeamspeakWirdJetzt = new JLabel("TeamSpeak wird jetzt installiert");
lblTeamspeakWirdJetzt.setBounds(236, 369, 199, 16);
contentPane.add(lblTeamspeakWirdJetzt);
JLabel lblWinrarWirdJetzt = new JLabel("WinRAR wird jetzt installiert");
lblWinrarWirdJetzt.setBounds(236, 399, 181, 16);
contentPane.add(lblWinrarWirdJetzt);
JLabel lblArduinoIdeWird = new JLabel("Arduino IDE wird jetzt installiert");
lblArduinoIdeWird.setBounds(236, 268, 168, 16);
contentPane.add(lblArduinoIdeWird);
JLabel lblCcleanerWirdJetzt = new JLabel("CCleaner wird jetzt installiert");
lblCcleanerWirdJetzt.setBounds(236, 239, 199, 16);
contentPane.add(lblCcleanerWirdJetzt);
JLabel lblDevcWirdJetzt = new JLabel("Dev-C++ wird jetzt installiert");
lblDevcWirdJetzt.setBounds(236, 209, 219, 16);
contentPane.add(lblDevcWirdJetzt);
JLabel lblGeogebraWirdJetzt = new JLabel("GeoGebra wird jetzt installiert");
lblGeogebraWirdJetzt.setBounds(236, 179, 219, 16);
contentPane.add(lblGeogebraWirdJetzt);
JLabel lblMicrosoftOffice = new JLabel("Microsoft Office 365 wird jetzt installiert");
lblMicrosoftOffice.setBounds(236, 149, 273, 16);
contentPane.add(lblMicrosoftOffice);
JLabel lblSteamWirdJetzt = new JLabel("Steam wird jetzt installiert");
lblSteamWirdJetzt.setBounds(236, 119, 168, 16);
contentPane.add(lblSteamWirdJetzt);
JButton btnNewButton = new JButton("INSTALL");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (checkbxOpera.isSelected() && checkbxOrigin.isSelected())
{
try
{
Runtime rOp = Runtime.getRuntime();
Process rt = rOp.exec(path5);
rt.waitFor();
JOptionPane.showMessageDialog(null, "Opera wurde erfolgreich installiert");
Runtime rOr = Runtime.getRuntime();
Process rp = rOr.exec(path6);
rp.waitFor();
JOptionPane.showMessageDialog(null, "OK");
}
catch( IOException | InterruptedException ex)
{
JOptionPane.showMessageDialog(null, "Ein Fehler ist aufgetreten! Möglicherweise " +
"existiert die Datei nicht, oder der Pfad ist falsch!");
}
}
else if (checkbxOrigin.isSelected())
{
try
{
Runtime rOr = Runtime.getRuntime();
Process rp = rOr.exec(path6);
rp.waitFor();
JOptionPane.showMessageDialog(null, "OK");
}
catch( IOException | InterruptedException ex)
{
JOptionPane.showMessageDialog(null, "Ein Fehler ist aufgetreten! Möglicherweise " +
"existiert die Datei nicht, oder der Pfad ist falsch!");
}
}
else if (checkbxOpera.isSelected())
{
try
{
Runtime rOp = Runtime.getRuntime();
Process rt = rOp.exec(path5);
rt.waitFor();
JOptionPane.showMessageDialog(null, "Opera wurde erfolgreich installiert");
}
catch( IOException | InterruptedException ex)
{
JOptionPane.showMessageDialog(null, "Ein Fehler ist aufgetreten! Möglicherweise " +
"existiert die Datei nicht, oder der Pfad ist falsch!");
}
}
else
{
JOptionPane.showMessageDialog(null, "Kein Programm wurde ausgewählt");
}
}
});
btnNewButton.setBounds(414, 465, 147, 39);
contentPane.add(btnNewButton);
}
}