Мое установленное приложение WPF падает при попытке создать файл - PullRequest
0 голосов
/ 14 мая 2019

У меня проблема с моим приложением WPF (простая игра-кликер). Я только что сделал развертывание / создал проект установки, используя расширение проектов установщика Microsoft Visual Studio для Visual Studio. Казалось бы, все работает нормально, программа установки работает хорошо (проверено на другом компьютере), а установленное приложение работает почти правильно Единственным исключением является функция вызова кнопки, которая создает новый текстовый файл (что-то вроде черновика файла «сохранить») в папке, где установлено приложение. Нажатие на эту кнопку вызывает мгновенный сбой всего приложения. Больше ничего не происходит, сообщений об ошибках нет, приложение просто выключается

Я предполагаю, что проблема заключается в правах доступа к папке / правах администратора.

Я добавил txt-файл с тем же именем в папку приложения с помощью окна «Файловая система» в проекте установки, развернул и снова установил. Даже когда файл существует, проблема возникает снова (возможно, из-за прав доступа при попытке переопределить содержимое файла).

Может быть важно, чтобы все работало при запуске приложения через VS, а также использование .exe отлично работает на любом компьютере. Проблема только в том, что приложение установлено с помощью программы установки.

Я не уверен, где проблема, поэтому трудно показать какой-то код, если честно, я даже не уверен, если это проблема с кодом, может быть, это можно решить с помощью установки некоторых свойств проекта установки?

Я хотел бы хранить некоторые данные локально между двумя сессиями, я выбрал txt-файл, потому что он легкий и простой, даже если это не самый элегантный способ. Я ожидаю, что установленное приложение сможет создавать и перезаписывать текстовый файл в своей папке.

P.S. если вам нужен какой-либо код, снимки экрана или информация о моей настройке, пожалуйста, дайте мне знать в разделе комментариев, я предоставлю то, что необходимо

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

Спасибо всем за решение и знания, проблема была, как я и предполагал (доступ к пути запрещен).Я использовал этот код для создания пути:

Directory.GetCurrentDirectory() + "\\SyntyhCitySave.txt";

Создание файла в специальном каталоге вместо папки приложения работает, вот решение моей проблемы:

Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\SyntyhCitySave.txt";

Tomtom answerпомечены как принятые.

0 голосов
/ 14 мая 2019

На момент установки программы у вас есть права администратора.Таким образом, папка, в которой находится ваше приложение, также была создана с помощью administrator-rigths.

Если вы хотите сохранить данные в этой папке, вам придется запускать ваше приложение от имени администратора.(не лучшая идея)

В противном случае вы можете изменить свой код для записи файла во время выполнения в другое место, где вам не нужны права администратора.

Например:

string path = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

выдаст вам: «C: \ Users \ MyUserName \ AppData \ Local»

string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);

выдаст вам: «C: \ Users \ MyUserName \ AppData \ Roaming»

string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

выдаст вам: "C: \ Users \ MyUserName \ Documents"

И некоторая обработка ошибок при сохранении файла будет очень полезной и полезной;)

...