Создать текстовый файл на стороне клиента программно - PullRequest
0 голосов
/ 02 февраля 2010

У нас есть серверное развертывание Ruby-on-rails, которое должно позволить пользователям загружать на свой компьютер предварительно скомпилированный самораспаковывающийся файл Windows EXE.

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

У нас есть 2 варианта:

  1. Создайте этот текстовый файл на сервере Linux и НЕКОТОРЫЕ? встроить его в Windows EXE. Это кажется надуманным
  2. Заставьте пользователя загрузить статический EXE-файл и каким-то образом получить динамическую текстовую информацию, хранящуюся на клиентском компьютере (с помощью невидимой загрузки, файлов cookie, vbscript или JavaScript на стороне клиента).

Обратите внимание, что на данный момент мы исключили наличие двух отдельных ссылок на скачивание (1 для exe и 1 для динамической текстовой информации) из-за проблем, связанных с этим пользовательским интерфейсом (т. Е. Некрасивый UX, загрузки могут храниться на разных дорожки и т. д.).

Я не большой веб-разработчик, но потратив несколько минут на Google, я думаю, что оба решения сталкиваются с проблемами и безобразны.

У кого-нибудь есть умная идея?

Ответы [ 3 ]

2 голосов
/ 02 февраля 2010

Можно просто добавить ваш текстовый файл в исполняемый файл. Эти дополнительные байты будут игнорироваться загрузчиком операционной системы, но ваша программа сможет их получить. Вот как работают самораспаковывающиеся EXE-файлы.

При запуске исполняемый файл открывает args[0] (который является его собственным исполняемым файлом) и ищет необходимое количество байтов в конце, а затем читает текст.

Ваш веб-скрипт легко обрабатывает байты exe в ответе, а затем отправляет текстовый файл в том же ответе.

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

Различные примеры [msdn] добавления данных в EXE показывают разбор структуры EXE с самого начала, чтобы найти, где данные начинаются. Простое добавление длины последних данных в EXE избавляет от необходимости понимать структуру EXE.

1 голос
/ 02 февраля 2010

Пара идей:

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

2) Укажите КЛЮЧ / ПИН-КОД после того, как пользователь загрузит исполняемый файл. Когда приложение запускается в первый раз, не обнаружив текстового файла, оно запрашивает PIN-код, исполняемый файл затем вызывает веб-сервис и загружает информацию для сохранения в текстовом файле. Это может быть, например, Guid.

0 голосов
/ 02 февраля 2010

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

...