Zbudowałem instalatora dla mojej aplikacji, a wszystkie moje pliki dll i treści są coraz poprawnie skopiowane do katalogu C:\Program Files\MyCompany\MyApp
. Kiedy uruchamiam moją aplikację z Visual Studio, wszystko działa świetnie. Jednak po uruchomieniu zainstalowanej wersji aplikacji otrzymuję numer DirectoryNotFoundException
. Problem wydaje się być z Environment.CurrentDirectory
.
Spodziewałem Environment.CurrentDirectory
być ...
"C:\\Program Files\\MyCompany\\MyApp"
... ale to było rzeczywiście ...
"C:\\Documents and Settings\\DanThMan"
Co tu się dzieje? Jak rozwiązać ten problem?
Dzięki.
EDIT:
Dobra, hmm. Ten problem występuje tylko po uruchomieniu skrótu Menu Start. Jeśli uruchomię bezpośrednio MyApp.exe, wszystko będzie dobrze.
EDIT 2:
myślę, że dotarłeś do końca tego teraz. W moim Instalatorze (będącym Visual Studio SetupProject) skrót menu Start ma właściwość o nazwie WorkingFolder
, która "Określa folder, w którym zostanie zainstalowana docelowa aplikacja dla skrótu." Przypadkowo ustawiłem WorkingFolder
na "MyCompany". Powinien to być "Folder aplikacji". Teraz, gdy mam go poprawnie ustawiony, Environment.CurrentDirectory
znowu działa zgodnie z oczekiwaniami. Dzięki za twoją pomoc.
EDIT 3:
Jednak czytając ostrzeżenia poniżej, zdecydowałem się pójść z następujących jako zamiennik dla Environment.CurrentDirectory
:
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
Poszedłem z drugim rozwiązaniem, ponieważ pierwszy nie będzie działał z aplikacją WPF (chyba że dołączymy zestaw dla Windows Forms). – devuxer