Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

link dependencies

976
02 июля 2010 года
mikhalych
198 / / 04.01.2009
Здравствуйте господа.
Пишу маленькую програмку используя платформу .NET (версия не имеет значения).

И для работы этой програмки на компьютере источнике хочу чтоб платформа .NET не требовалось. Можно ли все библиотеки используемые моей программой включить в самой программе чтоб OS (Windows источника) не требовала установку платформы.

В интернете ничего по теме не нашел к сожалению и решил все таки вас побеспокоить :o
5
02 июля 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: mikhalych

И для работы этой програмки на компьютере источнике хочу чтоб платформа .NET не требовалось.

Опять?!
Дотнет 2.0 уже наверно в каждой NT-шке на этой планете стоит, но стабильно каждые пол-года всплывает такая тема.
А линкер такой есть но стоит приличных денег.

8.2K
02 июля 2010 года
bagie2
299 / / 26.10.2008
вообще я просто тупо копировал все сборки, которые нужны проге + mscoree.dll, gdiplus.dll, msvcp*.dll, msvcr*.dll и всё работало) только путь в реестре еще надо прописать к этим сборками (либо пропатчить mscoree наверное) :)
976
02 июля 2010 года
mikhalych
198 / / 04.01.2009
Спасибо уважаемые дамы и господа.
Еще какие нибудь варианты ?!
262
02 июля 2010 года
Iktomy
1.2K / / 11.10.2004
Здравствуйте, я сконструировал двигатель внутреннего сгорания на бензине. Как заставить его работать без бензина?

Возможные варианты ответа:
- сконструировать двигатель на твердом топливе;
- сконструировать двигатель на водородном топливе;
- сконструировать дизельный двигатель;
- и т.д.

Обрати внимание, Мыхалыч, ключевое слово "сконструировать", т.е., в твоем случае, выбрать другую технологию для своей софтины. хотя это и не привествуется, но тебе предложили два варианта УКи выше, а мой будет крайне третьим:)

Вопрос надо в FAQ ввести, наверное. В раздел "Первые шаги в .NET"
976
07 июля 2010 года
mikhalych
198 / / 04.01.2009
Цитата: hardcase
Опять?!
Дотнет 2.0 уже наверно в каждой NT-шке на этой планете стоит, но стабильно каждые пол-года всплывает такая тема.
А линкер такой есть но стоит приличных денег.



Должен вас огорчить уважаемый(ая) hardcase к сожалению в нашей стране на большинства компьютеров установлены Win XP без всяких Service Pack'ов.
А .NET платформа как мы все знаем появляется с Сервис пака 2 то ли 3.

5
07 июля 2010 года
hardcase
4.5K / / 09.08.2005
Цитата: mikhalych
Должен вас огорчить уважаемый(ая) hardcase к сожалению в нашей стране на большинства компьютеров установлены Win XP без всяких Service Pack'ов.

Статистику по машинам в студию! Неужто у такого огромного количества пользователей висят порнобаннеры и машины работают в ботнетах и svchost падает постоянно?

Цитата: mikhalych
А .NET платформа как мы все знаем появляется с Сервис пака 2 то ли 3.

Так пускай пользователь/админ и ставит ее, коль ещё нету. Ваша "небольшая" программа после линковки с mscorlib и прочими System.Core.dll превратится в многомегабайтного монстра. :D

976
07 июля 2010 года
mikhalych
198 / / 04.01.2009
Цитата: bagie2
вообще я просто тупо копировал все сборки, которые нужны проге + mscoree.dll, gdiplus.dll, msvcp*.dll, msvcr*.dll и всё работало) только путь в реестре еще надо прописать к этим сборками (либо пропатчить mscoree наверное) :)



А как можно в реестре прописать эти библиотеки ?
Можно пример кода ?

976
07 июля 2010 года
mikhalych
198 / / 04.01.2009
Цитата: hardcase
Статистику по машинам в студию! Неужто у такого огромного количества пользователей висят порнобаннеры и машины работают в ботнетах?

Так пускай пользователь/админ и ставит ее, коль ещё нету. Ваша "небольшая" программа после линковки с mscorlib и прочими System.Core.dll превратится в многомегабайтного монстра. :D



Да вы правы.
мой простенький Hello World приложение которое ничего и толком не делает и весит 14 KB, после того как я ее собрал со всеми потрохами с помощью vmWare ThinApp стал весить аж 170 MB.:eek:
Я глазам своим не верю не ужели нет никакого выхода из положения.

8.2K
08 июля 2010 года
bagie2
299 / / 26.10.2008
да всё есть. я собрал базовый комплект на основе dotnet20sp2. правда не весь функционал доступен и доп. сборки по мере надобности надо прикручивать. просто кидаем все дллки в папку с прогой и вуяля. вопрос только в лицензионности данного подхода поскольку мс обычно не разрешает "потрошить" свои инсталляторы. поэтому только могу поподробнее расписать как это сделать, но выкладывать ничего не буду. базовый комплект дллок в архиве весит чуть меньше 10мб к тому же часть из них можно упаковать с помощью .NETZ
399
08 июля 2010 года
KIV
432 / / 20.01.2009
Единственный способ сделать маленькое приложение, не требуещее установки .NET - не использовать нет. Писать на C, C++, FreePascal или Delphi (или Asm. Тогда ваш Hello world будет весить вообще несколько КБ. Только не будет переносим, у вас не будет стандартной бибилиотеки. так что это вариант я предлагаю не в серьёз). Тогда ваш Hello world будет весить меньше мегабайта. Только вот придётся отказаться некоторых возможностей, которые даёт только .NET и переписать весь проект с нуля.
976
08 июля 2010 года
mikhalych
198 / / 04.01.2009
Цитата: bagie2
да всё есть. я собрал базовый комплект на основе dotnet20sp2. правда не весь функционал доступен и доп. сборки по мере надобности надо прикручивать. просто кидаем все дллки в папку с прогой и вуяля. вопрос только в лицензионности данного подхода поскольку мс обычно не разрешает "потрошить" свои инсталляторы. поэтому только могу поподробнее расписать как это сделать, но выкладывать ничего не буду. базовый комплект дллок в архиве весит чуть меньше 10мб к тому же часть из них можно упаковать с помощью .NETZ



А нельзя ли все эти дллки впихнуть во внутрь самой проги (.exe) файла ?:confused:

8.2K
08 июля 2010 года
bagie2
299 / / 26.10.2008
Пишу доку для .NET 2.0 (к тому же без нормальной установки всё равно работает не весь функционал)

Для запуска необходимо скопировать в папку с программой (минимальный набор):
Accessibility.dll
mscoree.dll
mscorjit.dll
mscorlib.dll
mscorwks.dll
msvcr80.dll
sortkey.nlp
sorttbls.nlp
System.dll

Если приложение использует WinForms, то сразу становятся нужны:
gdiplus.dll (не всегда, но почти всегда)
System.Drawing.dll
System.Windows.Forms.dll

Если работает с данными, то обычно как минимум надо:
System.Data.dll
System.Transactions.dll

и т.д. по надобности другие сборки

Сразу скажу, чтобы кидать все дллки в одну папку и не прописывать ничего в реестре надо патчить mscoree.dll, а это не совсем честно. Поэтому вариант -
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework параметр InstallRoot должен указывать на каталог, в котором создан подкаталог v2.0.50727 и в него надо переместить файлы:
mscorjit.dll
mscorlib.dll
mscorwks.dll
sortkey.nlp
sorttbls.nlp
остальные файлы нужно оставить в папке с программой.

Все .NET сборки, кроме (!!!) mscorlib.dll и System.dll можно упаковать в один исполняемый файл замечательной программой .NETZ

Сейчас пример. Возьмем HelloWorld.exe
Он использует System, System.Windows.Forms, System.Drawing
1. В каталоге программы (пусть будет C:\Temp) файлы:
Accessibility.dll
HelloWorld.exe
mscoree.dll
msvcr80.dll
System.dll
System.Drawing.dll
System.Windows.Forms.dll

2. Создадим тут же каталог "v2.0.50727"
и закинем в него:
mscorjit.dll
mscorlib.dll
mscorwks.dll
sortkey.nlp
sorttbls.nlp

3. В реестре пропишем (.reg-файл):
 
Код:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]
"InstallRoot"="C:\\Temp"


и вуаля, работает

4. теперь качаем утилиту .NETZ
пишем в командной строке:
 
Код:
netz -r defcomp.dll -s -so -n -z HelloWorld.exe Accessibility.dll System.Drawing.dll System.Windows.Forms.dll

и уже получаем на выходе HelloWorld.exe размером примерно 1,8Мб :D
Теперь Accessibility.dll,System.Drawing.dll и System.Windows.Forms.dll можно удалить.

5. В итоге получили следуещее:

C:\Temp\v2.0.50727\mscorjit.dll
C:\Temp\v2.0.50727\mscorlib.dll
C:\Temp\v2.0.50727\mscorwks.dll
C:\Temp\v2.0.50727\sortkey.nlp
C:\Temp\v2.0.50727\sorttbls.nlp
C:\Temp\HelloWorld.exe
C:\Temp\mscoree.dll
C:\Temp\msvcr80.dll
C:\Temp\System.dll
И необходимость прописывать в реестре путь к C:\Temp или другому каталогу
Весь размер C:\Temp вышел на 16мб

Вообще всё это изврат, но зато очень увлекательно :)
Ну и еще раз предупрежу, что MS не разрешает ковырять свои инсталляторы насколько я знаю, поэтому сами думайте как поступить. Просто информация, что технически так можно сделать и безо всяких платных утилит.

[SIZE=2]
Кстати этот же фреймворк 2.0 безо всяких сервис-паков который (dotnetfx20.exe) успешно ставится на Win2K SP3 и на WinXP SP0, так что может просто пусть ставят хотя бы такой. Только нужно предварительно установить обновление WindowsInstaller-KB884016-v2-x86.exe (3.0)
[/SIZE]
976
08 июля 2010 года
mikhalych
198 / / 04.01.2009
Все очень хорошо понятно.
Буду иметь ввиду что есть такое решение проблемы.
Большое человеческое спасибо уважаемый(ая) bagie2
8.2K
09 июля 2010 года
bagie2
299 / / 26.10.2008
или еще вариант заюзать Mono для Windows. не знаю только на каких сервис паках винды он работает, может на любых.
241
10 июля 2010 года
Sanila_san
1.6K / / 07.06.2005
Михалыч, вы бы хоть секретом поделились, что за программа такая, что её надо под дотнет писать и продвигать без дотнета. Интересно же. Я, например, при всей своей фантазии не могу понять, какой нуждой может быть оправдано такое архитектурное решение.

Моно ставится на любую из ныне здравствующих WinXP. Насчёт сервиспаков: если первый сервиспак народу не доставил, то второй доставил чуть менее чем всем; поэтому если вы видите Windows XP, с вероятностью 95% у неё будет второй сервиспак. Во всяком случае, если пять лет назад второй сервиспак ещё приходилось ставить поверх (сам этим занимался), то к 2007 году даже XP SP1 была относительно редкой, чаще же встречался второй сервиспак.

Изобретать обходные варианты с дописыванием библиотек дотнета прямо в инсталлятор глупо хотя бы уже потому, что таким способом вы лишаете пользователя запустить программу под моно. А даже если не лишаете, то заставляете его качать кучу ненужного; этот подход порочен.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог