Игра, опубликованная на C# XNA, не запускается и получает место установки

Я пытался создать свой первый журнал ошибок для своей игры, и я столкнулся с некоторыми проблемами. Прежде всего, я пытаюсь создать текстовый файл, используя:

errorLog = new StreamWriter("c:\\ErrorLog.txt", true);

Однако я могу запустить игру только через Setup.exe после установки игры, потому что это единственный исполняемый файл, которому я могу назначить права администратора, ярлык игры не имеет этой опции. Всякий раз, когда я пытаюсь запустить игру откуда-то еще, я просто получаю "программа перестала отвечать".

Моя вторая проблема - это создание текстового файла там, где я его хочу, я хочу создать его там, где была установлена ​​игра, из которой "c:\Program Files (x86)\MyGame". Я пытался использовать несколько разных методов:

Environment.GetCommandLineArgs()[0];
Path.GetDirectoryName(baseDir);
Assembly.GetExecutingAssembly().Location;

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

Спасибо заранее за любую помощь.

2 ответа

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

Ты можешь использовать ApplicationDeployment.CurrentDeployment.DataDirectory что, вероятно, то, что вы ищете, или даже лучше:

private string GetDataDirectory()
{
    if (ApplicationDeployment.IsNetworkDeployed)
        return ApplicationDeployment.CurrentDeployment.DataDirectory;
    else
        return Application.StartupPath;
}

Как насчет Directory.GetCurrentDirectory()?

Другие вопросы по тегам