Laden...

Nach Installation auf anderem Rechner: Programm reagiert nicht...

Erstellt von InSiDeR vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.090 Views
I
InSiDeR Themenstarter:in
95 Beiträge seit 2011
vor 12 Jahren
Nach Installation auf anderem Rechner: Programm reagiert nicht...

Hallo zusammen,
habe ein Programm in Windows Forms erstellt und dazu ein Setup Projekt hinzugefügt. Alles ordnungsgemäß eingestellt und ausprobiert.

Klappt auf meinem PC (Windows 7) wunderbar. Hab das Programm umher geschickt und es kann an fremden Computern nicht geöffnet werden. Hatte erst mit .NET Framework 4.0 programmiert und da ging es bei einer Person.

Als ich dann mein Programm um eine E-Mail Abfrage eines Postfachs erweitert habe, ging es auch bei dieser Person nicht mehr. Nun habe ich auf .NET Framework 3.5 umgestellt und gemerkt, das es noch immer nicht funktioniert.

Liegt es nun wirklich an der E-Mail Abfrage?

Hier der Code meiner E-Mail Abfrage:

 public void ListMyEmails()
        {
            // Create a folder named "inbox" under current directory
            // to save the email retrieved.
            string curpath = Directory.GetCurrentDirectory();
            string mailbox = String.Format("{0}\\inbox", curpath);

            // If the folder is not existed, create it.
            if (!Directory.Exists(mailbox))
            {
                Directory.CreateDirectory(mailbox);
            }

            // Gmail IMAP4 server is "imap.gmail.com"
            MailServer oServer = new MailServer("imap.gmx.net",
                        "email", "passwort", ServerProtocol.Imap4);
            MailClient oClient = new MailClient("TryIt");

            // Set SSL connection,
            oServer.SSLConnection = true;

            // Set 993 IMAP4 port
            oServer.Port = 993;

            try
            {
                oClient.Connect(oServer);
                MailInfo[] infos = oClient.GetMailInfos();
                for (int i = 0; i < infos.Length; i++)
                {
                    MailInfo info = infos[i];

                    // Download email from GMail IMAP4 server
                    Mail oMail = oClient.GetMail(info);

                    DateTime datum = new DateTime();
                    datum = oMail.ReceivedDate;

                    //Datum
                    string datumAsString = datum.ToString("dd.MM.yy - HH:mm");

                    //Empfänger
                    string emailVon = oMail.From.ToString();

                    string[] splitEmailVon = emailVon.Split('"');
                    emailVon = splitEmailVon[1];

                    //Betreff
                    string betreff = oMail.Subject;

                    string[] splitBetreff = betreff.Split('(');
                    betreff = splitBetreff[0];

                    string eintrag = datumAsString + " - " + emailVon + " - " + betreff;

                    ListViewItem aFooItem = new ListViewItem(eintrag); //Parent item
                    ListViewItem.ListViewSubItem aSubFooItem1 = new ListViewItem.ListViewSubItem(aFooItem, oMail.TextBody); //Creating subitems for the parent item
                    aFooItem.SubItems.Add(aSubFooItem1); //Associating these subitems to the parent item
                    listViewEmails.Items.Add(aFooItem); //Adding the parent item to the listview control


                    // MessageBox.Show("Anzahl E-Mail: " + infos.Length + "\n\nEmpfangen am: " + datum + "\n\nEmpfangen von:\n" + oMail.From.ToString() + "\n\nBetreff:\n" + oMail.Subject + "\n\nNachricht:\n" + oMail.TextBody);

                    // Generate an email file name based on date time.
                    System.DateTime d = System.DateTime.Now;
                    System.Globalization.CultureInfo cur = new
                    System.Globalization.CultureInfo("de-DE");
                    string sdate = d.ToString("dd.MM.yy-HH.mm", cur);
                    string fileName = String.Format("{0}\\{1}{2}{3}.eml", mailbox, sdate, d.Millisecond.ToString("d3"), i);

                    // Save email to local disk
                    oMail.SaveAs(fileName, true);

                    // Mark email as deleted in GMail account.
                    //oClient.Delete(info);
                }

                // Quit and pure emails marked as deleted from Gmail IMAP4 server.
                oClient.Quit();
            }
            catch (Exception ep)
            {
                MessageBox.Show(ep.Message);
            }
        }

Diese wird bei Programmstart sofort ausgeführt und um entsprechenden Reiter gefüllt. Woran kann es nun liegen, dass das Programm auf fremden Computern nicht läuft?

Danke für eure Hilfe.

Mit freundlichen Grüßen,
InSiDeR

3.170 Beiträge seit 2006
vor 12 Jahren

Hallo,

schau mal in .EXE läuft auf Entwicklungsrechner, aber nicht auf anderem PC
Da wird einiges genannt was genau zu solchen Problemen führen kann. Bei Deinem Mailabfrage tippe ich auf fehlende Schreibrechte in Directory.GetCurrentDirectory().

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

I
InSiDeR Themenstarter:in
95 Beiträge seit 2011
vor 12 Jahren

Vielen Dank für deine Antwort. Ich werde das mal mit try-catch ausprobieren und einfach mal meine Methoden damit umschließen.

Ich melde mich morgen nach erneuten Tests. Danke.

//edit: Was mir noch eingefallen ist: Habe vorhin beim Start des Programms die beiden Methoden auskommentiert und trotzdem hat es nicht gestartet. Bin echt gespannt woran es liegt...

Mit freundlichen Grüßen,
InSiDeR

1.552 Beiträge seit 2010
vor 12 Jahren

Hallo InSiDeR,

fange alle Fehler auf höchster Ebene ab und gib diese aus, oder logge sie, dann kannst du mehr mit dem Grund des Absturzes anfangen.

Stichwort: Unhandled Exceptions

Gruß
Michael

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

I
InSiDeR Themenstarter:in
95 Beiträge seit 2011
vor 12 Jahren

Problem: Bei mir klappt es. Wie soll ich da try catch ausprobieren, wenn alles funktioniert?

Mit freundlichen Grüßen,
InSiDeR

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo InSiDeR,

wenn der Fehler bei dir nicht auftritt, musst du die Version mit dem try/catch an die Person(en) schicken, bei der/denen die Probleme auftreten. Die muss/müssen dir dann sagen, welche Fehlermeldung erscheint. Oder du schreibst die Fehlermeldungen in eine Log-Datei und lässt dir diese zusenden.

Wobei ich mich ein bisschen über diese Frage wundere. Denn das Vorgehen ist doch eigentlich offensichtlich.

herbivore

S
753 Beiträge seit 2006
vor 12 Jahren

Hallo,
bei solchen Fällen könnte ein virtuelle Maschine hilfreich sein, um zu testen, wie sich deine Programme auf anderen OS oder auf einem ganz frisch installiertem System verhalten.

Life is a short