Home › Forums › Discussions › Support › Build Delphi examples
- This topic has 6 replies, 3 voices, and was last updated 18 years, 10 months ago by slavryk.
-
AuthorPosts
-
February 2, 2006 at 3:43 pm #4987
Заказчик купил и передал нам для работы исходники вашей библиотеки. Возникли проблемы с Delphi примерами – после компиляции и запуска не находится функция IsDriverLoaded да и все остальные тоже, потому как в экспорте они назывются по другому.
00001000 1 0000 ??0CNdisApi@@QAE@ABV0@@Z
00001110 2 0001 ??0CNdisApi@@QAE@PBD@Z
000011F0 3 0002 ??1CNdisApi@@UAE@XZ
00001040 4 0003 ??4CNdisApi@@QAEAAV0@ABV0@@Z
0000ABF0 5 0004 ??_7CNdisApi@@6B@
00001080 6 0005 ??_FCNdisApi@@QAEXXZ
00001E50 7 0006 ?ConvertWindows2000AdapterName@CNdisApi@@SAHPBDPADK@Z
00001FB0 8 0007 ?ConvertWindows9xAdapterName@CNdisApi@@SAHPBDPADK@Z
00001CA0 9 0008 ?ConvertWindowsNTAdapterName@CNdisApi@@SAHPBDPADK@Z
00001220 10 0009 ?DeviceIoControl@CNdisApi@@QAEHKPAXH0HPAHPAU_OVERLAPPED@@@Z
00001400 11 000A ?FlushAdapterPacketQueue@CNdisApi@@QAEHPAX@Z
000013D0 12 000B ?GetAdapterMode@CNdisApi@@QAEHPAU_ADAPTER_MODE@@@Z
00001430 13 000C ?GetAdapterPacketQueueSize@CNdisApi@@QAEHPAXPAK@Z
00001BB0 14 000D ?GetAdaptersStartupMode@CNdisApi@@SAKXZ
00001870 15 000E ?GetBytesReturned@CNdisApi@@QAEKXZ
00001800 16 000F ?GetHwPacketFilter@CNdisApi@@QAEHPAXPAK@Z
000019A0 17 0010 ?GetMTUDecrement@CNdisApi@@SAKXZ
000012D0 18 0011 ?GetTcpipBoundAdaptersInfo@CNdisApi@@QAEHPAU_TCP_AdapterList@@@Z
00001290 19 0012 ?GetVersion@CNdisApi@@QAEKXZ
00001860 20 0013 ?IsDriverLoaded@CNdisApi@@QAEHXZ
000016E0 21 0014 ?NdisrdRequest@CNdisApi@@QAEHPAU_PACKET_OID_DATA@@H@Z
00001370 22 0015 ?ReadPacket@CNdisApi@@QAEHPAU_ETH_REQUEST@@@Z
00001340 23 0016 ?SendPacketToAdapter@CNdisApi@@QAEHPAU_ETH_REQUEST@@@Z
00001310 24 0017 ?SendPacketToMstcp@CNdisApi@@QAEHPAU_ETH_REQUEST@@@Z
00001610 25 0018 ?SetAdapterListChangeEvent@CNdisApi@@QAEHPAX@Z
000013A0 26 0019 ?SetAdapterMode@CNdisApi@@QAEHPAU_ADAPTER_MODE@@@Z
00001A90 27 001A ?SetAdaptersStartupMode@CNdisApi@@SAHK@Z
000017B0 28 001B ?SetHwPacketFilter@CNdisApi@@QAEHPAXK@Z
00001880 29 001C ?SetMTUDecrement@CNdisApi@@SAHK@Z
00001470 30 001D ?SetPacketEvent@CNdisApi@@QAEHPAX0@Z
00001540 31 001E ?SetWANEvent@CNdisApi@@QAEHPAX@ZПока работаю с библиотекой от CBuilder, но она требует cc3260mt.dll – совсем не хочется его включать в поставку.
Я мог бы конечно переименовать функции в winpkf.pas так чтобы все заработало, но некоторых вообще нету в таблице экспорта версии для Delphi (OpenFilterDriverCloseFilterDriver например) да и хотелось бы все-таки знать как понимать то, что предоставляемые примеры не рабоют с предоставляемыми же собранными библиотеками.
Сергей.[/img]
February 2, 2006 at 4:42 pm #5943А ты случаем не пробовал использовать эти фунции, называя их так как они экспортируются.
Смотри в winpk.pas как они объявленв для исполльзовани в Delphi
function OpenFilterDriver(pszFileName : Pchar): THANDLE; stdcall; external ‘ndisapi.dll’;
procedure CloseFilterDriver(hOpen: THANDLE); stdcall; external ‘ndisapi.dll’;
function GetDriverVersion(hOpen: THANDLE): DWORD; stdcall; external ‘ndisapi.dll’;
function GetTcpipBoundAdaptersInfo(hOpen: THANDLE; pAdapters: PTCP_AdapterList): DWORD; stdcall; external ‘ndisapi.dll’;
function SendPacketToMstcp(hOpen: THANDLE; pPacket: PETH_REQUEST): DWORD; stdcall; external ‘ndisapi.dll’;
function SendPacketToAdapter(hOpen: THANDLE; pPacket: PETH_REQUEST): DWORD; stdcall; external ‘ndisapi.dll’;
function ReadPacket(hOpen: THANDLE; pPacket: PETH_REQUEST): DWORD; stdcall; external ‘ndisapi.dll’;
function SetAdapterMode(hOpen: THANDLE; pMode: PADAPTER_MODE): DWORD; stdcall; external ‘ndisapi.dll’;
function FlushAdapterPacketQueue(hOpen: THANDLE; hAdapter: THANDLE): DWORD; stdcall; external ‘ndisapi.dll’;
function SetPacketEvent(hOpen: THANDLE; hAdapter: THANDLE; hWin32Event: THANDLE): DWORD; stdcall; external ‘ndisapi.dll’;
function SetWANEvent(hOpen: THANDLE; hWin32Event: THANDLE): DWORD; stdcall; external ‘ndisapi.dll’;
function SetAdapterListChangeEvent(hOpen: THANDLE; hWin32Event: THANDLE): DWORD; stdcall; external ‘ndisapi.dll’;
function NdisrdRequest(hOpen: THANDLE; OidData: PPACKET_OID_DATA; dwSet: DWORD): DWORD; stdcall; external ‘ndisapi.dll’;
function SetHwPacketFilter(hOpen: THANDLE; hAdapter: THANDLE; dwFilter: DWORD):DWORD; stdcall; external ‘ndisapi.dll’;
function GetHwPacketFilter(hOpen: THANDLE; hAdapter: THANDLE; var dwFilter: DWORD):DWORD; stdcall; external ‘ndisapi.dll’;
function SetMTUDecrement(dwMTUDecrement: DWORD): DWORD; stdcall; external ‘ndisapi.dll’;
function GetMTUDecrement(): DWORD; stdcall; external ‘ndisapi.dll’;
function IsDriverLoaded(hOpen: THANDLE): Boolean; stdcall; external ‘ndisapi.dll’;
function GetBytesReturned(hOpen: THANDLE): DWORD; stdcall; external ‘ndisapi.dll’;
function ConvertWindowsNTAdapterName(szAdapterName: Pchar; szUserFriendlyName: Pchar; dwUserFriendlyNameLength: DWORD): DWORD; stdcall; external ‘ndisapi.dll’;
function ConvertWindows2000AdapterName(szAdapterName: Pchar; szUserFriendlyName: Pchar; dwUserFriendlyNameLength: DWORD): DWORD; stdcall; external ‘ndisapi.dll’;
function ConvertWindows9xAdapterName(szAdapterName: Pchar; szUserFriendlyName: Pchar; dwUserFriendlyNameLength: DWORD): DWORD; stdcall; external ‘ndisapi.dll’;
……………………………Все сэмплы прекрасно компилятся.
February 2, 2006 at 7:31 pm #5944Компилятся, только при старте (в процессе линкования) ругаются на отсутсвие функции в библиотеке. Я надеюсь мы оба говорим о Delphi примерах. Может остальные и работают.
Нет, я не пробовал их использовать называя так как они экспортируются. К тому же если ТЫ обратишь внимание – процедура procedure CloseFilterDriver(hOpen: THANDLE); stdcall; external ‘ndisapi.dll’; вообще ни в каком виде из ndisapi.dll не экспортируется.
Естественно все можно решить приписав в winpk.pas конструцию name. Естественнго можно полезть в исходники и экспортнуть недостающие функции. Однако мне не ясно, почему то что идет в поставке не работает. Ну и хотелось бы никуда не лезть, а взять нормальную DLL не требующую никаких борладновсих рантайм библиотек.
February 3, 2006 at 12:59 am #5945Вот что выдает dumpbin по экспортам ndisapi.dll собранной в Visual C++ (та что стандартно идет в инсталляторе WinpkFilter):
Microsoft (R) COFF Binary File Dumper Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
Dump of file ndisapi.dll
File Type: DLL
Section contains the following exports for ndisapi.dll
0 characteristics
43BD7734 time date stamp Thu Jan 05 21:44:52 2006
0.00 version
1 ordinal base
57 number of functions
57 number of names
ordinal hint RVA name
1 0 00001000 ??0CNdisApi@@QAE@ABV0@@Z
2 1 00001110 ??0CNdisApi@@QAE@PBD@Z
3 2 000011F0 ??1CNdisApi@@UAE@XZ
4 3 00001040 ??4CNdisApi@@QAEAAV0@ABV0@@Z
5 4 0000ABF0 ??_7CNdisApi@@6B@
6 5 00001080 ??_FCNdisApi@@QAEXXZ
7 6 00001E50 ?ConvertWindows2000AdapterName@CNdisApi@@SAHPBDPADK@Z
8 7 00001FB0 ?ConvertWindows9xAdapterName@CNdisApi@@SAHPBDPADK@Z
9 8 00001CA0 ?ConvertWindowsNTAdapterName@CNdisApi@@SAHPBDPADK@Z
10 9 00001220 ?DeviceIoControl@CNdisApi@@QAEHKPAXH0HPAHPAU_OVERLAPPED@@@Z
11 A 00001400 ?FlushAdapterPacketQueue@CNdisApi@@QAEHPAX@Z
12 B 000013D0 ?GetAdapterMode@CNdisApi@@QAEHPAU_ADAPTER_MODE@@@Z
13 C 00001430 ?GetAdapterPacketQueueSize@CNdisApi@@QAEHPAXPAK@Z
14 D 00001BB0 ?GetAdaptersStartupMode@CNdisApi@@SAKXZ
15 E 00001870 ?GetBytesReturned@CNdisApi@@QAEKXZ
16 F 00001800 ?GetHwPacketFilter@CNdisApi@@QAEHPAXPAK@Z
17 10 000019A0 ?GetMTUDecrement@CNdisApi@@SAKXZ
18 11 000012D0 ?GetTcpipBoundAdaptersInfo@CNdisApi@@QAEHPAU_TCP_AdapterList@@@Z
19 12 00001290 ?GetVersion@CNdisApi@@QAEKXZ
20 13 00001860 ?IsDriverLoaded@CNdisApi@@QAEHXZ
21 14 000016E0 ?NdisrdRequest@CNdisApi@@QAEHPAU_PACKET_OID_DATA@@H@Z
22 15 00001370 ?ReadPacket@CNdisApi@@QAEHPAU_ETH_REQUEST@@@Z
23 16 00001340 ?SendPacketToAdapter@CNdisApi@@QAEHPAU_ETH_REQUEST@@@Z
24 17 00001310 ?SendPacketToMstcp@CNdisApi@@QAEHPAU_ETH_REQUEST@@@Z
25 18 00001610 ?SetAdapterListChangeEvent@CNdisApi@@QAEHPAX@Z
26 19 000013A0 ?SetAdapterMode@CNdisApi@@QAEHPAU_ADAPTER_MODE@@@Z
27 1A 00001A90 ?SetAdaptersStartupMode@CNdisApi@@SAHK@Z
28 1B 000017B0 ?SetHwPacketFilter@CNdisApi@@QAEHPAXK@Z
29 1C 00001880 ?SetMTUDecrement@CNdisApi@@SAHK@Z
30 1D 00001470 ?SetPacketEvent@CNdisApi@@QAEHPAX0@Z
31 1E 00001540 ?SetWANEvent@CNdisApi@@QAEHPAX@Z
32 1F 000020B0 CloseFilterDriver
33 20 00002520 ConvertWindows2000AdapterName
34 21 00002540 ConvertWindows9xAdapterName
35 22 00002500 ConvertWindowsNTAdapterName
36 23 000022A0 FlushAdapterPacketQueue
37 24 00002260 GetAdapterMode
38 25 000022F0 GetAdapterPacketQueueSize
39 26 000024B0 GetAdaptersStartupMode
40 27 000024E0 GetBytesReturned
41 28 000020D0 GetDriverVersion
42 29 00002420 GetHwPacketFilter
43 2A 00002490 GetMTUDecrement
44 2B 00002120 GetTcpipBoundAdaptersInfo
45 2C 000024C0 IsDriverLoaded
46 2D 000023A0 NdisrdRequest
47 2E 00002090 OpenFilterDriver
48 2F 000021E0 ReadPacket
49 30 000021A0 SendPacketToAdapter
50 31 00002160 SendPacketToMstcp
51 32 00002380 SetAdapterListChangeEvent
52 33 00002220 SetAdapterMode
53 34 000024A0 SetAdaptersStartupMode
54 35 000023C0 SetHwPacketFilter
55 36 00002480 SetMTUDecrement
56 37 00002340 SetPacketEvent
57 38 00002360 SetWANEvent
Summary
2000 .data
4000 .rdata
2000 .reloc
1000 .rsrc
8000 .textКак видно их приведенного, ndisapi.dll экспортирует два набора функций, один в форме C++ класса (может быть использован только из C++) и второй в виде _stdcall функций (для использования из других програмных сред). C Visual C run time библиотека слинкована статически.
Думаю, что проблема в следущем, библиотека была собрана в C++ Builder без учета DEF файла (судя по тому что экспортируется только C++ класс). Что касается cc3260mt.dll, тут мне сложно сказать с уверенностью(нет под рукой проверить), но думаю с run-time библиотекой можно и в C++ Builder слинковаться статически.
Собственно, возможность сборки DLL под C++ Builder была добавлена только для использования с C++ Builder, из-за того что name decoration используемый Visual C++ и C++ Builder различен. Возникшие проблемы скорей всего обьясняются с переносом и сборкой проектов под версию C++ Builder отличную от используемой нами. Вот экспорты ndisapi.dll собранной под C++ Builder 6.0:
Microsoft (R) COFF Binary File Dumper Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
Dump of file ndisapi.dll
File Type: DLL
Section contains the following exports for ndisapi.dll
0 characteristics
0 time date stamp Thu Jan 01 02:00:00 1970
0.00 version
1 ordinal base
54 number of functions
54 number of names
ordinal hint RVA name
1 0 00001258 @CNdisApi@$bctr$qpxc
2 1 00001344 @CNdisApi@$bdtr$qv
26 2 00001E0C @CNdisApi@ConvertWindows2000AdapterName$qpxcpcul
27 3 00001F30 @CNdisApi@ConvertWindows9xAdapterName$qpxcpcul
25 4 00001CAC @CNdisApi@ConvertWindowsNTAdapterName$qpxcpcul
3 5 00001390 @CNdisApi@DeviceIoControl$qulpvit2ipip11_OVERLAPPED
11 6 00001554 @CNdisApi@FlushAdapterPacketQueue$qpv
10 7 00001528 @CNdisApi@GetAdapterMode$qp13_ADAPTER_MODE
12 8 00001580 @CNdisApi@GetAdapterPacketQueueSize$qpvpul
24 9 00001BD8 @CNdisApi@GetAdaptersStartupMode$qv
20 A 00001960 @CNdisApi@GetBytesReturned$qv
18 B 000018EC @CNdisApi@GetHwPacketFilter$qpvpul
22 C 00001A38 @CNdisApi@GetMTUDecrement$qv
5 D 00001444 @CNdisApi@GetTcpipBoundAdaptersInfo$qp16_TCP_AdapterList
4 E 0000140C @CNdisApi@GetVersion$qv
19 F 00001954 @CNdisApi@IsDriverLoaded$qv
16 10 000017BC @CNdisApi@NdisrdRequest$qp16_PACKET_OID_DATAi
8 11 000014D0 @CNdisApi@ReadPacket$qp12_ETH_REQUEST
7 12 000014A4 @CNdisApi@SendPacketToAdapter$qp12_ETH_REQUEST
6 13 00001478 @CNdisApi@SendPacketToMstcp$qp12_ETH_REQUEST
15 14 00001710 @CNdisApi@SetAdapterListChangeEvent$qpv
9 15 000014FC @CNdisApi@SetAdapterMode$qp13_ADAPTER_MODE
23 16 00001B0C @CNdisApi@SetAdaptersStartupMode$qul
17 17 0000188C @CNdisApi@SetHwPacketFilter$qpvul
21 18 0000196C @CNdisApi@SetMTUDecrement$qul
13 19 000015AC @CNdisApi@SetPacketEvent$qpvt1
14 1A 00001664 @CNdisApi@SetWANEvent$qpv
30 1B 0000202C CloseFilterDriver
53 1C 00002398 ConvertWindows2000AdapterName
54 1D 000023B0 ConvertWindows9xAdapterName
52 1E 00002380 ConvertWindowsNTAdapterName
38 1F 000021AC FlushAdapterPacketQueue
37 20 00002184 GetAdapterMode
39 21 000021D4 GetAdapterPacketQueueSize
49 22 0000232C GetAdaptersStartupMode
51 23 0000235C GetBytesReturned
31 24 00002098 GetDriverVersion
45 25 000022D4 GetHwPacketFilter
47 26 00002310 GetMTUDecrement
32 27 000020BC GetTcpipBoundAdaptersInfo
50 28 00002338 IsDriverLoaded
43 29 0000227C NdisrdRequest
29 2A 00001FD8 OpenFilterDriver
35 2B 00002134 ReadPacket
34 2C 0000210C SendPacketToAdapter
33 2D 000020E4 SendPacketToMstcp
42 2E 00002254 SetAdapterListChangeEvent
36 2F 0000215C SetAdapterMode
48 30 0000231C SetAdaptersStartupMode
44 31 000022A8 SetHwPacketFilter
46 32 00002300 SetMTUDecrement
40 33 00002200 SetPacketEvent
41 34 0000222C SetWANEvent
28 35 000030F8 ___CPPdebugHook
Summary
1000 .data
1000 .edata
1000 .idata
1000 .reloc
1000 .rsrc
2000 .text
1000 .tls
Как видно экспорты опять отличаются от приведенных вами.
Решение проблемы в том что необходимо должным образом настроить проект под C++ Builder:
1) Убедится что DEF файл включен в сборку (по всей видимости он был убран в следствии конвертации проекта).
2) Вместо динамической run-time библиотеки использовать статическую.
February 3, 2006 at 12:16 pm #5946Ребята, кто-то кого-то не понимает вероятно. Может и я.
Я пока что ничего не пересобирал. Я говорю о файле, который я хочу использщовать в работе. Файл был взят из “C:Program FilesWinpkFilter FrameworkDelphibinndisapi.dll”, получился он путем инсталляции winpkflt_srcx86.exe. Его tdump следующий
Section: Exports
Flags: 00000000
Time Stamp: 4384E0DD : Wed Nov 23 23:36:29 2005
Major Version: 0000
Minor Version: 0000
Exports from ndisapi.dll
31 exported name(s), 31 export addresse(s). Ordinal base is 1.
Sorted by Name:
RVA Ord. Hint Name
---- ---- ----
00001000 1 0000 ??0CNdisApi@@QAE@ABV0@@Z
00001110 2 0001 ??0CNdisApi@@QAE@PBD@Z
000011F0 3 0002 ??1CNdisApi@@UAE@XZ
00001040 4 0003 ??4CNdisApi@@QAEAAV0@ABV0@@Z
0000ABF0 5 0004 ??_7CNdisApi@@6B@
00001080 6 0005 ??_FCNdisApi@@QAEXXZ
00001E50 7 0006 ?ConvertWindows2000AdapterName@CNdisApi@@SAHPBDPADK@Z
00001FB0 8 0007 ?ConvertWindows9xAdapterName@CNdisApi@@SAHPBDPADK@Z
00001CA0 9 0008 ?ConvertWindowsNTAdapterName@CNdisApi@@SAHPBDPADK@Z
00001220 10 0009 ?DeviceIoControl@CNdisApi@@QAEHKPAXH0HPAHPAU_OVERLAPPED@@@Z
00001400 11 000A ?FlushAdapterPacketQueue@CNdisApi@@QAEHPAX@Z
000013D0 12 000B ?GetAdapterMode@CNdisApi@@QAEHPAU_ADAPTER_MODE@@@Z
00001430 13 000C ?GetAdapterPacketQueueSize@CNdisApi@@QAEHPAXPAK@Z
00001BB0 14 000D ?GetAdaptersStartupMode@CNdisApi@@SAKXZ
00001870 15 000E ?GetBytesReturned@CNdisApi@@QAEKXZ
00001800 16 000F ?GetHwPacketFilter@CNdisApi@@QAEHPAXPAK@Z
000019A0 17 0010 ?GetMTUDecrement@CNdisApi@@SAKXZ
000012D0 18 0011 ?GetTcpipBoundAdaptersInfo@CNdisApi@@QAEHPAU_TCP_AdapterList@@@Z
00001290 19 0012 ?GetVersion@CNdisApi@@QAEKXZ
00001860 20 0013 ?IsDriverLoaded@CNdisApi@@QAEHXZ
000016E0 21 0014 ?NdisrdRequest@CNdisApi@@QAEHPAU_PACKET_OID_DATA@@H@Z
00001370 22 0015 ?ReadPacket@CNdisApi@@QAEHPAU_ETH_REQUEST@@@Z
00001340 23 0016 ?SendPacketToAdapter@CNdisApi@@QAEHPAU_ETH_REQUEST@@@Z
00001310 24 0017 ?SendPacketToMstcp@CNdisApi@@QAEHPAU_ETH_REQUEST@@@Z
00001610 25 0018 ?SetAdapterListChangeEvent@CNdisApi@@QAEHPAX@Z
000013A0 26 0019 ?SetAdapterMode@CNdisApi@@QAEHPAU_ADAPTER_MODE@@@Z
00001A90 27 001A ?SetAdaptersStartupMode@CNdisApi@@SAHK@Z
000017B0 28 001B ?SetHwPacketFilter@CNdisApi@@QAEHPAXK@Z
00001880 29 001C ?SetMTUDecrement@CNdisApi@@SAHK@Z
00001470 30 001D ?SetPacketEvent@CNdisApi@@QAEHPAX0@Z
00001540 31 001E ?SetWANEvent@CNdisApi@@QAEHPAX@Z
Библиотека мне прекрасно подходит – она не импортирует ничего из cc3260mt.dll, но к сожалению не экспортирует всего необходимого.
И вот именно с ней не работают Ваши примеры (как и моя программа) – по понятным причинам – не все функции экспортируются.
И честно говоря я не хочу ничего пересобирать. Я бы предпочел получить нормальную версию от Вас.
February 3, 2006 at 3:07 pm #5947Гм, тогда все понятно. Действительно, в версии 3.0.1 (2005-Nov-24) при переходе с VC6 на VS2005 была допущена ошибка (в следствии конвертации проекта был выброшен DEF файл). Так как все основные тесты отрабатываются С++ (и большинством разработчиков в данной сфере используется именно С/C++), проблема была замечена и исправлена только 2006-Jan-05. Все это отражено в ньюсах http://www.ntkernel.com/news.php
Проблема не является критической, и требовала единственного изменения в VS2005 проекте DLL (сборка с использованием VC++ 6.0 или из командной строки (sources) выполнялась правильно). В общем-то любой коммерческий WinpkFilter проект так или иначе требует пересборки драйверов (в случае Developers license пересборка осуществляется нами) и DLL во избежание конфликтов имен драйверов. Так что пересобрать и драйвера (с использование новых имен устройств, модулей и протоколов) и DLL все-таки необходимо иначе разработанное вами приложение будет конфликтовать со стандартной сборкой WinpkFilter и основанных на ней примерах.
Заказчик может получить обновление используя полученные ранее реквизиты. Хотя как следует из вышесказанного стандартная сборка DLL не должна использоваться для конечного продукта.
Прошу прощения за доставленные неудобства. Если возникнут вопросы относительно сборки драйверов, то пишите на support@ntkernel.com решим в рабочем порядке (единственое просьба указать покупателя, нашего клиента и вашего заказчика, приблизительную дату и номер ордера). Обычно, в случае Source Code license заказчик сам выполняет сборку драйверов и DLL, однако если это по каким-либо причинам проблематично мы так же делаем custom build как и в случае с Developer license.
February 3, 2006 at 3:10 pm #5948Спасибо.
До конечной версии еще далеко, а пока что нас вполне устраивает стандартная сборка. А вот лишние файлы отправлять бета тестерам не хочется.
-
AuthorPosts
- You must be logged in to reply to this topic.