Как заставить мое приложение открываться из отдельной Winform после того, как я архивирую файлы (они открываются из ссылки на путь к файлу в Visual Studio)? (C#) - PullRequest
0 голосов
/ 08 января 2020

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

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

private void button1_Click(object sender, EventArgs e)
{
    System.Diagnostics.Process.Start("C:\\Users\\Student User\\source\\repos\\Calculator2\\Calculator2\\bin\\debug\\Calculator2.exe");
}

private void button2_Click(object sender, EventArgs e)
{
    System.Diagnostics.Process.Start("C:\\Users\\Student User\\source\\repos\\WebAppUni1\\WebAppUni1\\bin\\Debug\\WebAppUni1.exe");
}

private void button3_Click(object sender, EventArgs e)
{
    System.Diagnostics.Process.Start("C:\\Users\\Student User\\source\\repos\\UniTextApp\\UniTextApp\\bin\\Debug\\UniTextApp.exe");
}

Будет ли это просто случай изменения пути к файлу к его новому месту назначения после ZIPped? Спасибо!

Ответы [ 3 ]

0 голосов
/ 08 января 2020

Как я могу написать свой код, чтобы эти приложения открывались при переносе на другой компьютер? Т.е. не удается найти путь к файлу.

Если вы хотите получить доступ к тому же пути, просто изменив домашний каталог пользователя, вы можете использовать %userprofile% в пути. Пример:

%userprofile%\desktop
%userprofile%\documents

Дополнительные параметры здесь: Какая альтернатива для ~ (домашний каталог пользователя) в Windows командной строке?

0 голосов
/ 08 января 2020

Есть несколько возможностей обойти эту проблему. Учитывая, что вы не хотите размещать приложения в той же структуре папок, что и основная,

1) Строка расположения внутри System.Diagnostics.Process.Start("C:\\Users\\Student User\\source\\repos\\UniTextApp\\UniTextApp\\bin\\Debug\\UniTextApp.exe"); может быть заменена фактической переменной, значение которой инициализируется, как вы хотите. Если он не найден в первой попытке, вы можете использовать форму просмотра для поиска отсутствующего файла. 2) Используйте внешний файл настроек для установки местоположения различных приложений.

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

например

..\\..\\..\\..\\UniTextApp\\UniTextApp\\bin\\Debug\\UniTextApp.exe
0 голосов
/ 08 января 2020

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

Итак: предоставьте установщик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...