Создание самораскрывающихся документов
Я работаю над проектом, который имеет собственный формат файла. В проекте предусмотрена большая программа, необходимая для установки, и программа просмотра меньшего размера, которая не требует установки. Я хотел бы иметь возможность экспортировать файлы из моего основного приложения, которые являются "самооткрывающимися".exe-файлами, то есть вы можете дважды щелкнуть по исполняемому файлу, и встроенный файл отобразится (это делается для того, чтобы передать средство просмотра людям, которые имеют НЕ установлено основное приложение, способное его просмотреть - они будут только проходить вокруг документа).
Я немного растерялся, как это сделать. Мои две мысли, которые я исследовал, зашли в тупик. Они есть:
1) Вставить файл в программу просмотра. Я могу сделать это вручную через Visual Studio, и у меня есть рабочая демонстрация этого, но я не могу найти способ сделать это на лету.
2) Создайте самораспаковывающийся архив, который извлекает файл и исполняемый файл в temp и запускает исполняемый файл с именем файла в командной строке. Это звучит просто и возможно (хотя и хакерски), но я столкнулся с проблемой, что у архива или установки программ, похоже, нет командной строки, необходимой для всего этого.
Есть идеи? Я предпочитаю второе, потому что это легко, но первое, потому что оно кажется более пуленепробиваемым / менее хакерским.
2 ответа
В то время как включение exe в документ, чтобы сделать его самораскрывающимся документом - это крутая идея, я не думаю, что это лучшее решение проблемы. Проблема заключается в том, что для документов требуется определенный просмотрщик, который недоступен. Поэтому сделайте зрителя как можно проще.
И это то, что Xint0 предложил в комментариях. Найдите способ сделать зрителя максимально доступным. Не нужно беспокоиться о пиратстве, так как оно только просматривает закрытый формат, поэтому его интересуют только те, у кого уже есть документ, который они не могут открыть. Поэтому разместите средство просмотра на веб-сайте своей компании и предложите компаниям, использующим полное программное обеспечение, разместить ссылки на средство просмотра на своих веб-сайтах, чтобы их клиенты могли легко его найти.
Используя ваш метод (1):
Если вы используете.NET, вы можете сделать вашу программу просмотра одной сборкой, а документ - другой сборкой, а затем использовать ILMerge и т. П., Чтобы объединить их в один конечный исполняемый файл.
ILMerge - это программа командной строки, поэтому вы должны быть в состоянии автоматизировать этот шаг.
Таким образом, ваш настраиваемый просмотрщик должен быть довольно простым, просто "загрузить другую сборку, которая есть у меня", и, возможно, вызвать функцию другой сборки для получения данных.
Единственная другая часть головоломки - как создать сборку документа. Я не совсем уверен в шагах, но кажется, что это должно быть выполнимо.
Возможно, используйте CMake или аналогичный для генерации проекта VStudio, а затем используйте MSBuild для сборки его в сборку.