Объединить данные в приложение .net - PullRequest
0 голосов
/ 15 апреля 2011

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

Основном:
Программа A (Программа B, Данные) => Программа C

Программа A просто объединится в Streams в один. Даже мысль об использовании copy /b B.exe + file.data также приходит на ум. Так что я не слишком обеспокоен тем, насколько аккуратно объединяются файлы.

Идея состоит в том, что Программа B знает, что будет использоваться таким образом, и будет искать данные. Возникает вопрос: как программа C может знать, где заканчивается исполняемый код и начинаются данные? Я знаю, что в досах раньше были данные заголовка, определяющие их размер, но я не знаю, что существует в .net для такого рода проверки.

Ответы [ 3 ]

1 голос
/ 15 апреля 2011

Хотя вы можете определить размер .exe из PE-заголовка, есть более простой способ: запишите длину добавленного раздела как последнее слово вместе с магическим числом. Чтобы прочитать его, найдите (-WordSizePlusMagicNumberSize, SeekOrigin.End), прочитайте их и убедитесь, что они действительны.

1 голос
/ 15 апреля 2011

Если ваша цель - встроить данные в исполняемый файл, не могли бы вы вместо этого включить файл данных в качестве ресурса в Visual Studio?

0 голосов
/ 15 апреля 2011

Добавить данные как встроенный ресурс .

В Visual Studio добавьте файл, который вы хотите добавить, затем измените действие построения в свойствах файла с Нет (по умолчанию для типов без кода) на Встроенный ресурс. Затем скомпилируйте

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

Вам нужен некоторый контекст в вашем вопросе

ИЛИ, если вы на самом деле говорите о двух потоках, то, возможно, вы говорите об ADS, Альтернативные потоки данных , что, если память служит, является проблемой, но есть код, который дает легкий ( иш) API

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