Как передать параметр в exe, скачанный из сети? - PullRequest
6 голосов
/ 13 декабря 2010

У меня есть настольное приложение .Net, которое пользователи могут загрузить с моего сайта.Я хочу настроить это приложение для каждого пользователя.Есть ли способ изменить exe перед загрузкой, просто изменить несколько строк с подходящими для загрузки пользователями?Или можно передать параметры командной строки в этот файл через URL?

Ответы [ 4 ]

1 голос
/ 09 сентября 2015

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

Пропустите ниже, чтобы найти решение, которое я нашел приемлемым.

Добавление раздела в файл .EXE - Не идеально.

.exe-файл имеет разделы один за другим. Вы можете добавить раздел с вашими данными в нем, который затем будет читать исполняемый файл. Это требует, чтобы вы изменили (имели доступ к) исходный код исполняемого файла, чтобы он мог что-либо значимое использовать с данными. Кроме того, знакомство с форматом файла .exe и его изменение на стороне веб-сервера, а также игра с ним в исходном коде программы несколько утомительна.

Изменение ресурсов раздела .EXE-файла - Не идеально.

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

Перезаписать данные в .EXE в фиксированной позиции - Passable.

Пусть исполняемый файл считывает данные из себя с фиксированной позиции в файле, которая перезаписывается данными настройки при обслуживании файла .exe. Требуется изменить исходный код исполняемого файла.

Добавить данные в .EXE - Passable.

Добавить данные в исполняемый файл. Опять же, чтобы прочитать его и сделать с ним что-то особенное, требуется сам исполняемый файл.


☑ Обернуть .EXE в другой .EXE и добавить к нему ваши данные - Допустимо.

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

Этот вид исполняемого пакета также легко создавать на большинстве серверных (скриптовых) языков. Когда запрашивается загрузка, сервер отправляет exe-упаковщик, исходный exe-файл, настроенные данные и, конечно, некоторые поля данных статического размера, обозначающие размеры обоих этих блоков данных, чтобы он мог их извлечь.

Минусы: требует создания такой программы-обертки, если у кого-то ее нет.

Ссылки по теме:
1. Лучшие практики, позволяющие пользователям сети загружать пользовательские .exe с моего сайта с использованием PHP
2. Изменение исполняемого файла при загрузке (например, Ninite)

0 голосов
/ 13 декабря 2010

Если приложение развернуто в ClickOnce, передача параметров URL-адреса является параметром в диалоговом окне параметров ClickOnce.Однако я еще не использовал эту функцию.

РЕДАКТИРОВАТЬ
Возможно, вы захотите изменить некоторые пользовательские настройки в вашей конфигурации в зависимости от пользователя, который фактически запускает приложение.Вы также можете убедиться, что это делается только один раз для каждого пользователя, добавив соответствующий параметр SettingsNeedUpdate, установленный на true после начальной инициализации.

Пример:
Добавить новый параметр «Option1», «Option2 "и" SettingsNeedUpdate ", которые являются пользовательскими настройками.В Main вы можете добавить что-то вроде:

...
try
{
    if (Properties.Settings.Default.SettingsNeedUpdate)
    {
        Properties.Settings.Default.Option1 = ...;
        Properties.Settings.Default.Option2 = ...;
        Properties.Settings.Default.SettingsNeedUpdate = false;
        Properties.Settings.Default.Save();
    }
}
catch (Exception exp)
{
    ...
}

...
0 голосов
/ 13 декабря 2010

Вы можете написать библиотеку, которая может изменять ресурсы сборки (здесь таблица строк).Эта библиотека может выиграть от размышлений.

Когда пользователь запрашивает ваш файл, страница asp.net может настроить исполняемый файл (используя вашу библиотеку) и отправить его клиенту.

0 голосов
/ 13 декабря 2010

Не так, №

Однако вы можете автоматически заархивировать (на своем сервере) свой exe-файл с настраиваемым файлом app.config для каждого пользователя.

Обновление

Укажите местоположение загрузки для пользовательского HttpHandler, который объединит ваш exe-файл (используя http://www.sharpdevelop.net/OpenSource/SharpZipLib/) с сгенерированным (для текущего пользователя) файлом конфигурации приложения (http://generally.wordpress.com/2007/09/27/using-appconfig-for-user-defined-runtime-parameters/).

)

Затем пользователь распаковывает два файла (MyApp.exe & MyApp.exe.config) в любое место и запускает MyApp.exe.

Этот метод не работает, если у вас есть установщик.

...