Diskuze: Spuštění aplikace vytvořené ve VS2012 Express na jiném PC

C# .NET .NET (C# a Visual Basic) Spuštění aplikace vytvořené ve VS2012 Express na jiném PC American English version English version

Avatar
keke1
Člen
Avatar
keke1:

Ahojte,
obracím se na Vás s prosbou o pomoc.
Ve VS2012 Express vytvořím aplikaci, po odladění spustím v Release modu a daný *.exe soubor spustím. Vše je OK, aplikace jede. Problém nastává, když aplikaci spouštím na jiném počítači. V tu chvíli zahlásí error a je konec.
Problém je opepřen tím, že na některých počítačích jede...na některých ne.
Zkoušel jsem i měnit cílový .Net Framework, i jsem zadal ve vlastnostech sestavení cílovou platformu jako x86. Stejně to na jiných počítačích nerozjedu. Nevíte někdo co s tím?

OS mám Win8 64bit, .Net Framework 4.5...jsem z toho docela bezradný, jak vytvořit jednoduchou aplikaci, aby fungovala i na starších počítačích.

Předem děkuji za návrhy řešení.

P.s. pokud budete potřebovat další informace, klidně sem pište. Myslím, že tohle může potrápit víc lidí, kteří s vývojem začínají. Je krásné když aplikace funguje na počítači, kde byla vytvořena...ale je smutné, že ji pak člověk nemůže nikde prezentovat :-)

 
Odpovědět 12.6.2013 9:31
Avatar
Odpovídá na keke1
Michal Žůrek (misaz):

Problém je v tom, že ten cílový framework musí na počítači být nainstalovaný.

Pokud je, aplikace se normálně spustí, pokud ne, zahlasí chybu.

Nahoru Odpovědět 12.6.2013 9:36
Nesnáším {}, proto se jim vyhýbám.
Avatar
keke1
Člen
Avatar
keke1:

Možná jsem uvažoval špatně, ale když si nastavím cílový Framework na 4.0, tak by tu moji aplikaci měl sestavit tak, aby byla spustitelná i na frameworku 4.0. Nebo se mýlím?

 
Nahoru Odpovědět 12.6.2013 9:44
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na keke1
David Čápka:

Nastav tam 3.5 a půjde to na většině počítačů kromě Windows XP z roku 2001.

Nahoru Odpovědět 12.6.2013 10:26
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
keke1
Člen
Avatar
keke1:

Opravdu nevím co dělám špatně, ale mám nastavené Cílové rozhraní Framework na 3.5, na počítači je nainstalován 4.0 a pořád se aplikace nespustí a hlásí chybu. (Nefungovalo to, ani když jsem nastavil stejný Framework jako v počítači ve kterém chci aplikaci spouštět)
v App.Config je správně nastavený Framework na nižší...
Je potřeba ještě někde v aplikaci něco přepsat ručně?

Zoufale volám o pomoc :-)
Při ladění žádnou chybu nehlásí a ať nastavím jakýkoli cílový Framework, tak u mne to jede a na tom druhém počítači ne :-(

 
Nahoru Odpovědět 12.6.2013 12:32
Avatar
Libor Šimo (libcosenior):

Akú chybu hlási ten druhý pc?

Nahoru Odpovědět 12.6.2013 12:39
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
keke1
Člen
Avatar
keke1:

Zahlásí jen strohé:
Program XY přestal pracovat

Problém způsobil, že program přestal správně fungovat.
Ukončete program.

a jen dá možnost "Ukončit program"

to hlásí na WIN7

na XP
"error executing file"

 
Nahoru Odpovědět 12.6.2013 12:46
Avatar
Odpovídá na keke1
Libor Šimo (libcosenior):

Vytvor v tom VS2012 nový projekt, konzole aplikáciu a main uprav takto:

static void Main(string[] args)
{

    Console.WriteLine("Hexadecimálne číslo (rozsah 0 až FFFFFFFF)\nprevediem na desiatkové");
    Console.Write("\nZadaj: ");
    string hex = ""; // vstupná premenná
    string hexar = "0123456789abcdef"; // pomocná premenná pre funkciu Contains()
    int[] desiatky = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
    // ošetrenie vstupu
    bool opakovat = true;
    while (opakovat)
    {
        hex = Console.ReadLine();
        hex = hex.ToLower();
        foreach (char c in hex)
        {
            if (!hexar.Contains(c))
            {
                Console.Write("\nŠpatný vstup, znova: ");
                opakovat = true;
                break;
            }
            else
                opakovat = false;
        }
    }
    // koniec ošetrenia vstupu
    double nas = hex.Length - 1;
    double pom, dec = 0;
    foreach (char c in hex)
    {
        int cis = 0;
        int index = hexar.IndexOf(c);
        if (index >= 0) // znak nájdený
            cis = desiatky[index];
        pom = cis * Math.Pow(16, nas);
        nas--;
        dec += pom;
    }
    Console.Write("\nHex číslo {0} prevedené na dec je {1}.", hex, (int)dec);
    Console.ReadKey();
}

Skompiluj to a potom vyskúšaj na tom druhom PC.

Nahoru Odpovědět 12.6.2013 13:06
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
keke1
Člen
Avatar
keke1:

tohle mi spustí bez problémů...

já mám vytvořenou aplikaci WinForm a používám i databázi.

Nemůže být problém v tom?
Hlavně co se týče databáze? Ale podotýkám, že na některých počítačích to jede, na některých ne :-(

Jen pro upřesnění, jsem samouk, vše hledám v knihách a na internetu.
Určitě mi chybí celistvé informace a s tímto jsem se setkal náhodou, protože jsem potřeboval spustit aplikaci na jiném než na svém počítači.
Shodou okolností u manželky mi vše jelo krásně a tak jsem vůbec doteď neřešil, že by mohla podobná situace nastat...

 
Nahoru Odpovědět 12.6.2013 14:36
Avatar
Odpovídá na keke1
Michal Žůrek (misaz):

nejsem si moc jist, ale pro databáze musíš mít na cílovém počítači ještě něco nainstalované. Nicméně nevím co :D

Nahoru Odpovědět 12.6.2013 14:39
Nesnáším {}, proto se jim vyhýbám.
Avatar
keke1
Člen
Avatar
keke1:

Právě abych se vyhnul nutnosti mít nainstalovaný SQL server, tak jsem chtěl využít možnosti: Zdroj dat: Databázový soubor Microsoft SQL server.

prostě k aplikaci mám přidaný soubor *.mdf

:-(
Využívám v aplikaci i LINQ to SQL a hodně to zjednoduší práci kvůli otrockému vypisování jednotlivých SQL příkazů. Začínám mít pocit, že pro tuhle relativně jednoduchou aplikaci zkusím využít jako zdroj dat databázi MS Accessu.

Pro nástin aplikace:
Mám textové soubory(libovolný počet souborů, ale patřičné údaje jsou pořád na konkrétních místech v souboru)ve kterých jsou uložená data. Já z těchto souborů načtu informace a ukládám si je do databáze a následně s nimi pracuji.

 
Nahoru Odpovědět 12.6.2013 14:59
Avatar
ejoty
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
ejoty:

pro databaze musí být nainstlované servery.

 
Nahoru Odpovědět 12.6.2013 15:01
Avatar
Odpovídá na keke1
Luboš Běhounek (Satik):

Tohle tuším většinou .net exáč dělá, když mu chybí nějaká knihovna.
Pokud ti ten kód od libcosenior na těch PC jel, tak to nebude .NET, ale nějaká jiná knihovna, nevím, jaké všechny tam používáš.

Zkusil bych ještě do program.cs obalit main funkci try..catch a případnou chybu vypsat třeba do messageboxu, abys měl jistotu, že to není nějaká runtime chyba.

Nahoru Odpovědět 12.6.2013 15:05
:)
Avatar
keke1
Člen
Avatar
keke1:

Satiku i všem ostatním díky za rady.
Zkouším vše možné a nemožné :-)

když jsem zkusil obalit main funkci a ponechal cílovou platformu jako Framework 4.5 tak to zahlásilo, že je potřeba doinstalovat právě Framework 4.5. Ale když jsem změnil cílovou platformu na 4.0 nebo 3.5 tak tohle výjimku nezachytí a jen zahlásí jako dřív, že program nefunguje správně a je ho potřeba ukončit...

 
Nahoru Odpovědět 12.6.2013 15:57
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 14 zpráv z 14.