Как мне превратить мою программу в то, что я могу установить? - PullRequest
0 голосов
/ 04 февраля 2010

как мне превратить мою программу VC ++ 2008 в то, что я могу запустить на других компьютерах. Я попытался с помощью .exe, который он делает в отладке, но он скажет, что мне не хватает некоторых файлов и перечисляет все мои имена файлов .cpp и .h файлов (если я использую его на других компьютерах). Я хотел что-то, чтобы я мог зашифровать свои файлы, потому что один из них касается шифрования паролей / других вещей, поэтому я не могу позволить кому-то просто открыть мои файлы. Кроме того, мне бы очень хотелось, чтобы они приняли условия и положения, чтобы они не могли подать на меня в суд, если они что-то потеряют, это было бы очень, очень приятно. ^^

У меня есть только Microsoft Virtual C ++ 2008 Express Edition, которую я получил с их веб-сайта.

о, также, если я сделаю что-нибудь на Windows 7, это будет работать в XP или Vista?

Ответы [ 5 ]

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

Обычно вы не можете и почти никогда не должны распространять отладочные сборки на клиентские машины. По крайней мере, три причины.

  1. На клиентских компьютерах не будет отладочных версий ваших зависимых библиотек, таких как среда выполнения VC (msvcrtd.dll), поэтому они не смогут запускать ваше приложение.
  2. При компиляции в отладке ваш код во многих случаях будет работать неоптимизированным. Во-первых, вы не позволяете оптимизирующему компилятору оптимизировать работу при отладке, поэтому он будет работать медленнее и / или толще. С другой стороны, существуют отладочные версии таких вещей, как operator new, которые выделяют намного больше, чем вы запрашиваете, что используется при проверке целостности во время выполнения и т. Д. Таким образом, ваша программа работает быстрее и медленнее.
  3. Когда вы компилируете в отладке, ваш код будет проще реверсировать.

UPDATE:

И чтобы ответить на ваш вопрос, будет ли приложение, скомпилированное в Win7, работать в XP / Vista, ответьте «да», если вы не используете какие-либо функции Win7.

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

Вам понадобится Redist Pack для запуска двоичного файла на другом компьютере (если на нем еще не установлен пакет).

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

Вам нужно создать проект развертывания, который генерирует MSI, но я не уверен, что ваша версия Express делает это. Что касается шифрования, компиляция этого не делает, и ничто не мешает людям разбирать ваш код. Наконец, вам, вероятно, не следует писать собственные алгоритмы шифрования, поскольку большинство людей ошибаются в большинстве случаев. Используйте что-нибудь из коробки.

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

Первая часть уже получена (сборка выпуска, включает распространяемые библиотеки C ++ DLL).

Вторая часть, работающая на Vista / XP, не такая уж тривиальная.

Если вы напишите программу на чистом C ++, она безоговорочно будет работать на XP и Vista. Но как только вы включаете <windows.h>, вы вводите зависимость от минимальной версии Windows. По умолчанию сегодня все еще XP. Это означает, что вы не можете использовать любую функцию Vista или W7 напрямую, и, следовательно, ваша программа может работать на XP.

Но если вы #define WINVER 0x0600 до включения <windows.h>, то вы можете использовать функции, специфичные для Vista. Цена, которую вы платите за , используя эти функции Vista, заключается в том, что ваша программа больше не запускается на XP. Точно так же #define WINVER 0x0601 также предоставляет вам доступ к функциям Windows 7, помимо функций XP и Vista. И снова, использование функции Windows 7 останавливает вашу работу на XP или Vista.

Существуют некоторые приемы, которые позволяют вам использовать функции Windows 7, если они доступны. По сути, все они сводятся к вызову GetProcAddress("some_windows7_function") и каким-то образом обрабатывают случай, когда возвращается NULL.

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

если вы компилируете с использованием .NET 3.5 в Win 7, это должно работать и в xp, и в Vista (при условии, что на них установлена ​​среда .NET 3.5).

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