Создание самораскрывающихся документов

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

Я немного растерялся, как это сделать. Мои две мысли, которые я исследовал, зашли в тупик. Они есть:

1) Вставить файл в программу просмотра. Я могу сделать это вручную через Visual Studio, и у меня есть рабочая демонстрация этого, но я не могу найти способ сделать это на лету.

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

Есть идеи? Я предпочитаю второе, потому что это легко, но первое, потому что оно кажется более пуленепробиваемым / менее хакерским.

2 ответа

Решение

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

И это то, что Xint0 предложил в комментариях. Найдите способ сделать зрителя максимально доступным. Не нужно беспокоиться о пиратстве, так как оно только просматривает закрытый формат, поэтому его интересуют только те, у кого уже есть документ, который они не могут открыть. Поэтому разместите средство просмотра на веб-сайте своей компании и предложите компаниям, использующим полное программное обеспечение, разместить ссылки на средство просмотра на своих веб-сайтах, чтобы их клиенты могли легко его найти.

Используя ваш метод (1):

Если вы используете.NET, вы можете сделать вашу программу просмотра одной сборкой, а документ - другой сборкой, а затем использовать ILMerge и т. П., Чтобы объединить их в один конечный исполняемый файл.

ILMerge - это программа командной строки, поэтому вы должны быть в состоянии автоматизировать этот шаг.

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

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

Возможно, используйте CMake или аналогичный для генерации проекта VStudio, а затем используйте MSBuild для сборки его в сборку.

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