Как некоторые приложения могут просто разархивировать и запустить на ПК с Windows без проблем SxS? - PullRequest
0 голосов
/ 17 мая 2011

Некоторые группы часто жалуются на то, что установка в Windows распространяется по всей файловой системе и реестру, а некоторые приложения предоставляют возможность просто разархивировать файлы, чтобы можно было «удалить», просто удаляя.Но как им избежать всего уродства Visual C ++ Redist, Side-by-Side (SxS) и т. Д.запустить - нет установщика вообще или даже разархивировать, так как он маленький.Это возможно?

edit: Как и предполагалось, я пытался строить со статической зависимостью от времени выполнения (/ MT вместо / MD).Я получил следующее (средняя часть обрезана для ясности):

1>Linking...
1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _free already defined in LIBCMT.lib(free.obj)
1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _malloc already defined in LIBCMT.lib(malloc.obj)
1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: __mbschr already defined in LIBCMT.lib(mbschr.obj)
1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _realloc already defined in LIBCMT.lib(realloc.obj)
1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: __strdup already defined in LIBCMT.lib(strdup.obj)
1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _abort already defined in LIBCMT.lib(abort.obj)
1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: __stricmp already defined in LIBCMT.lib(stricmp.obj)
1>MSVCRT.lib(MSVCR90.dll) : error LNK2005: _setlocale already defined in LIBCMT.lib(setlocal.obj)
1>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBCMT.lib(typinfo.obj)
1>MSVCRT.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in LIBCMT.lib(typinfo.obj)
1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library

1 Ответ

1 голос
/ 17 мая 2011

Вы можете распространять один EXE-файл, если статически ссылаетесь на среду выполнения VC - на странице свойств проекта -> Свойства конфигурации -> C / C ++ -> Генерация кода и установите для параметра "Библиотека времени выполнения" параметр "не-dll".

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

...