Создание самораскрывающихся документов - PullRequest
5 голосов
/ 17 июня 2011

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

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 17 июня 2011

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

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

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

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

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

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

1 голос
/ 17 июня 2011

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

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

...