Показать сообщение отдельно
Старый 11.06.2007, 13:18   #212  
ZhanR is offline
ZhanR
Участник
 
22 / 10 (1) +
Регистрация: 13.04.2006
блин, чета не получается у меня решить задачу с использованием SysFileDeployer. В общем у меня проблема такая - DAX4.0 )))))
Короче сделал как там и описали (в смысле пока хотел посмореть как скопируются у меня файл \\axapta\40\NATApplication\Share\Include\addInsBut.bmp):
1. необходимый для копирования файл разместил на сервере в папке \\axapta\40\NATApplication\Share\Include (именно на папкуC:\Program Files\Microsoft Dynamics AX\40\NATApplication натравлен AOS), данной папке дал полный доступ для всех, а так же копируемому файлу в этой папке и на клиенте ресурсу «C:\Program Files\Microsoft Dynamics AX\40\Client\Share\Include» установил полное разрешение для всех (вкладка «безопасность» в свойствах файлов и папок).
2. написал класс-наследник от SysFileDeploymentFile, в нем перекрыл методы destinationPath и filename, в которых указал путь (return xInfo::directory(DirectoryType::Include) и имя файла (return 'addInsBut.bmp'
3. в методе SysFileDeployer.filesToDeploy возвращаю контейнер к котором указан описанный выше класс (classNum(имя_класса))

при пошаговой отладке запуска клиента, вижу что в методе SysFileDeployer.main проверка
if (!sysFileDeployer.parmUpToDate() && !sysFileDeployer.isUptodate() && sysFileDeployer.prompt())
обрывается на первом же !sysFileDeployer.parmUpToDate() (возвращает истину)

вообщем при комментировании данной проверки if (/*!sysFileDeployer.parmUpToDate() &&*/ !sysFileDeployer.isUptodate() && sysFileDeployer.prompt())
получается ошибка уже в !sysFileDeployer.isUptodate() – вообщем при отладке дохожу при проверке версии файла (даты модификации) до info.add(), в нем

_txt = «Сбой запроса на разрешение типа "FileIOPermission".
(S)\Classes\FileIOPermission\demand
(S)\Classes\WinAPIServer\createFile - line 26
(S)\Classes\WinAPIServer\getFileDate - line 13
(S)\Classes\WinAPIServer\getFileModifiedDate - line 10
(S)\Classes\SysFileDeploymentFile\serverVersion - line 5
(S)\Classes\SysFileDeploymentFile\parmServerVersion - line 4
(S)\Classes\SysFileDeployment\getServerVersion - line 5
(S)\Classes\SysFileDeployer\filesAndVersions - line 17
(C)\Classes\SysFileDeployer\isUptodate - line 3
(C)\Classes\SysFileDeployer\main - line 8
(C)\Classes\Info\startup - line 30»

И в данном методе переменная _sysInfoAction=null

В общем, работа прекращается при проверке !sysFileDeployer.isUptodate() ошибкой
«Сбой запроса на разрешение типа "FileIOPermission".
(S)\Classes\FileIOPermission\demand
(S)\Classes\WinAPIServer\createFile - line 26
(S)\Classes\WinAPIServer\getFileDate - line 13
(S)\Classes\WinAPIServer\getFileModifiedDate - line 10
(S)\Classes\SysFileDeploymentFile\serverVersion - line 5
(S)\Classes\SysFileDeploymentFile\parmServerVersion - line 4
(S)\Classes\SysFileDeployment\getServerVersion - line 5
(S)\Classes\SysFileDeployer\filesAndVersions - line 17
(C)\Classes\SysFileDeployer\isUptodate - line 3
(C)\Classes\SysFileDeployer\main - line 8
(C)\Classes\Info\startup - line 30»

--------------------------------------------------------
Выясняется что в методе Info.addв следующей строке

if (!_sysInfoAction && !_helpUrl && hasSecuritykeyAccess(securitykeynum(SysDevelopment), AccessType::View))
{
session = new xSession();
if(session.clientKind() == ClientType::Client)
{
_sysInfoAction = SysInfoAction_Editor::newStack();
}
}

Метод SysInfoAction_Editor::newStack() возвращает null…

-------------------------------------------------

кстати, в метод info.add() курсор каким-то чудом переходит сразу после кода в методе WinAPIServer.createfile
// check file I/O permission
if(_flags == #OPEN_EXISTING)
{
fileIOPerm = new FileIOPermission(_fileName,'r');
}
else
{
fileIOPerm = new FileIOPermission(_fileName,'w');
}
fileIOPerm.demand();


данный кусок я закомментировал и только после этого вроде как при входе аксапта спрашивает "В клиентской установке отсутствуют файлы, необходимые для работы Microsoft Dynamics", при подтверждении установки возникает ошибка:

Сбой запроса на разрешение типа "FileIOPermission".
(S)\Classes\FileIOPermission\demand
(S)\Classes\BinData\loadFile
(S)\Classes\SysFileDeployment\getServerFile - line 15
(C)\Classes\SysFileDeployment\copy - line 4
(C)\Classes\SysFileDeployment\run - line 7
(C)\Classes\SysFileDeployer\run - line 26
(C)\Classes\SysFileDeployer\main - line 9
(C)\Classes\Info\startup - line 30


уже не знаю куда дальше копать... (((((