Фон:
Я построил установщик для своего приложения, и все мои файлы dll и содержимого правильно копируются в каталог C:\Program Files\MyCompany\MyApp
. Когда я запускаю свое приложение из Visual Studio, все отлично работает. Однако, когда я запускаю установленную версию своего приложения, я получаю DirectoryNotFoundException
. Проблема, похоже, связана с Environment.CurrentDirectory
.
Я ожидал, что Environment.CurrentDirectory
будет...
"C:\\Program Files\\MyCompany\\MyApp"
... но это было на самом деле...
"C:\\Documents and Settings\\DanThMan"
Что здесь происходит? Как это решить?
Спасибо.
EDIT:
Хорошо, хм. Эта проблема возникает только при запуске ярлыка "Пуск". Если я запускаю MyApp.exe напрямую, все в порядке.
ИЗМЕНИТЬ 2:
Я думаю, что я дошел до этого момента. В моем установщике (который является Visual Studio SetupProject) ярлык меню "Пуск" имеет свойство WorkingFolder
, которое "Указывает папку, в которой будет установлено целевое приложение для ярлыка". Я случайно установил WorkingFolder
в "MyCompany". Это должна быть "Папка приложений". Теперь, когда я его правильно установил, Environment.CurrentDirectory
снова работает как ожидалось. Спасибо за вашу помощь.
ИЗМЕНИТЬ 3:
Однако, прочитав приведенные ниже предупреждения, я решил пойти со следующим в качестве замены для Environment.CurrentDirectory
:
System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);