четверг, мая 03, 2007
Longhorn and Sharepoint - харакири
При установке на эту работающую конструкцию Office Sharepoint Server'а не обратил внимания, что он без вариантов собрался установить SQL Express. И, зараза, установил. Причём старую версию - наверное, какая была в ноябре 2006 г. Получившаяся суперконструкция не стала работать, как и в предыдущем варианте, но ещё хуже - не запускается даже админское приложение.
Чтоб совсем скучно не было: всё это дело не удаляется - получается бесконечный цикл удаления Office Sharepoint Server'а с перезагрузками, Sharepoint не удаляется по причине наличия зависящего от него приложения...
Ковыряние в реестре привело к тому, что стала падать консоль (mmc) при вызове Server Management.
В общем, харакири. Придётся делать переустановку - ключей нагенерил много (эта зараза вправду проверяет использование и не даёт активировать повторно с тем же ключом).
вторник, мая 01, 2007
Управление Microsoft##SSEE
There is a free SQL management tool called Management Studio Express and using the magic connection string \\.\pipe\mssql$microsoft##ssee\sql\query you can connect to the Microsoft##SSEE instance.
Longhorn and Sharepoint
Входит в систему как роль (Role). Устанавливается с возможностью выбрать нужный язык (в т.ч. русский). При установке "на этом сервере" должна использоваться Windows Internal Database (пресловутая ##SSEE), однако даже пробовать не стал - этой базой по-прежнему непонятно, как поруководить (правда, удалить можно).
- Sharepoint Service (английский) установился в режиме "фермы" с использованием SQL Express sp2, всё гладко запустилось. Гладко установился русский language pack, создаются приложения и узлы на двух языках.
- Office Sharepoint Server установился, однако настроить его не получилось:
- Excel-Service не запускается с маловразумительным сообщением про неизвестно какой индекс.
- Приложения не запускаются тоже с сообщением про индекс:
Server Error in '/' Application.
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
Не помогает ни смена порядка установки ланг-паков, ни их удаление вовсе. Про какие индексы речь - ХЗ.
Longhorn on Virtual PC
На отдельной железке системка - хорошо, но для разработки/тестирования привычней, всё же, системка в виртуальной машине (благо, железо позволяет).
Установка на новую VPC (новый диск, дистрибутив подключил как CD ROM) - очень быстрая (минут 20), ещё полчаса на поднятие нужных сервисов и т.п. На этом, правда, радости и закончились.
- Расшаренные папки на основной системе доступны для изменений (копирование / удаление файлов, создание папок) только из проводника Windows (Explorer). Все остальные средства работы с файлами (cmd, Far Manager, 7-zip File Manager, PowerShell) обламываются - access denied.
- Sharepoint устанавливается, но работает никак - в админке нельзя поруководить сервисами - access, говорит, denied. Пункта создания приложений даже нет.
Не работает одинаково как в Virtual PC 2007 на Windows XP, так и в Virtual Server 2005 на Windows Server 2003.
понедельник, апреля 30, 2007
Longhorn beta3
Выложили благодетели этую радость. Даже пообещали, что почти год работать будет.
Ура! Скачал почти 2 Гб, установил на старый компьютер (впрочем, требованиям вполне удовлетворяет - P IV, 2.4 GHz, 1024 Mb memory).
Установка довольно быстрая (минут 30, наверное), однако дальнейшая настройка (File Server, Web Server и всякие фичи, нужные для жизни) - часа 4 с несчитанным количеством перезагрузок.
В итоге - вполне прилично бегающая система, можно использовать для работы вместо Windows XP и Windows Server 2003.
Правда, не положили в дистрибутив украшательств (темы, картинки, курсоры) и игрушек (хотя соответствующая feature устанавливается), да поначалу задолбали вопросами UAC и IE ESC (хорошо, что довольно быстро нашлись способы их отключить).
четверг, апреля 19, 2007
Быстрая вставка записей в SPList
Коллективным разумом на форуме дошли до способа вставлять записи, не извлекая всех имеющихся.
Определил вот такой метод:
const string EmptyQuery = "<Where><Eq><FieldRef Name='ID'/><Value Type='Integer'>0</Value></Eq></Where>";
public static SPListItem AddItem(SPList list) {
SPQuery q = new SPQuery();
q.Query = EmptyQuery;
return list.GetItems(q).Add();
}
И вместо конструкции
SPListItem newItem = list.Items.Add();
стал использовать
SPListItem newItem = AddItem(list);
На похожую тему - здесь
Maxthon 2.0
Folder of Document Library
Набрёл (ещё для Sharepoint-2003) на довольно заковыристый, но работающий способ определения имени папки, в которой размещаются файлы документов библиотеки library:
library.DefaultView.Url.Split("/".ToCharArray())[0];
Ничего более простого и прямого не обнаруживается (и в Sharepoint-2007 тоже).
XmListViewer 2007
Веб-часть XmListViewer 2007 предназначена для установки на узлах (сайтах) в составе Microsoft Office SharePoint Server 2007 или Microsoft SharePoint Services v.3.
Web part XmListViewer 2007 is intended for the installation on sites of Microsoft Office SharePoint Server 2007 or Microsoft SharePoint Services v.3.
суббота, апреля 07, 2007
ToolStripMenuItem
Строятся на этих штуковинах-объектах разные менюшки в наследниках System.Windows.Forms.Form.
Но какие-то странные эти "объекты". Недавно захотел сократить их количество в программе за счёт повторного использования одинаковых объектов в главном меню формы и в контекстном меню. Но случился облом: объект оказывается только в последнем списке DropDownItems, куда он был добавлен. В результате приходится объекты дублировать и добавлять копии в нужные коллекции.
Собственно, Студия только так и позволяет делать.
пятница, апреля 06, 2007
Тоже смешно
Без добавления пустой строки следует писать .ToString()
четверг, апреля 05, 2007
Смешное...
Выясняется, что конструкцию
if (list is SPDocumentLibrary)
node.Tag = item.File;
else
node.Tag = item;
нельзя записать в виде
node.Tag = (list is SPDocumentLibrary) ? item.File : item;
Компилятор орёт гнусными выражениями, что типы разные и привести их не может. Тупой компилятор.
понедельник, марта 26, 2007
Загадки WSS 2007
Удалённая отладка консольных приложений
Забавное решение получилось для субжа:
1: class Program {
2: const string debugKey = "-debug";
3: static void Main(string[] args) {
4: //debug
5: if (new List<string>(args).Contains(debugKey))
6: Console.ReadLine();
7: }
8: }
При запуске программы с параметром -debug в ком. строке она останавливается на строке №6 в ожидании нажатия на Enter. В это время и можно подцепиться отладчиком (напр., в Visual Studio) к процессу на удалённом компьютере и поставить нужные прерывания. После нажатия на Enter (в консоли удалённой машины) всё идёт обычным порядком.
WSS 2007 - очередная засада
Неправильно работает атрибут свойств веб-части WebPartStorage(Storage.Personal) - при отсутствии значения для текущщего юзера используется неизвестно чьё !!!
Пришлось делать проверку, есть ли у пользователя возможность сохранять значения свойств и при отсутствии оных использовать значение по умолчанию.
private bool UserCanWriteParameters() {
bool prevSave = this.SaveProperties;
bool prevCatch=SPContext.Current.Site.CatchAccessDeniedException;
bool retval = false;
SPContext.Current.Site.CatchAccessDeniedException = false;
try {
this.SaveProperties = true;
retval = true;
this.SaveProperties = prevSave;
} catch { }
SPContext.Current.Site.CatchAccessDeniedException = prevCatch;
return retval;
}
воскресенье, марта 25, 2007
Sharepoint Portal upgrade
Очередная засада.
При конвертации портала к версии MOSS2007 происходит преобразование областей (Area) в сайты (SPWeb) с сохранением структуры, существующей на момент процесса. Для обеспечения возможности использовать "портальные" адреса вида "/Cx/Cxx/area" организован редирект на вновь сформированные узлы. Где-то там установлено время ожидания до редиректа 5 сек. - как регулировать, можно ли уменьшить до нуля - ХЗ. Вот решил кто-то...
Кроме того, такие ссылки в разных местах порассованы и как автоматизировать их замену - абсолютно пока нет мыслей.
Иногда конвертер зачем-то организует на новом узле ещё один редирект (страницу /Pages/UpgLandingPgRedir.aspx) с совсем уж неправильным адресом, в котором перепутаны Title и Url области. Не для всех узлов он такое делает (специально городил разные комбинации, закономерности так и не понял), но всегда - неправильно
.
К счастью, оказалось, что на узле есть и нормальные страницы /Pages/default.aspx, на которую при известной сноровке можно переключиться в свойствах сайта. Для автоматизации этого дела надо бы утилитку какую сочинить...
Добавлено: сочинил утилитку...
среда, марта 21, 2007
Server 2003 sp2 continued
После установки обнаружились неприятные эффекты в работе Sharepoint Portal 2003 - ровно такие же, какие получились при установке .NET v.2.
Вот, блин.
Добавил: Upgrade до версии 2007 проходит нормально. Хоть какая радость.
четверг, марта 15, 2007
Server 2003 sp2
Выпустили вчера этот сервиспак (как где-то выразились - втихаря).
Описания толкового не приложили, а экспериментально выяснилось, что из ожидавшегося (и не сильно сложного, в общем-то) нету улучшенной графики для удалённого рабочего стола (RDP). При том, что клиентов, умеющих такой графикой пользоваться, раздали уже давно.
Да и WMP11 могли бы приложить - многие сервером как десктопом пользуются, при разработке под ASP.NET 1.1 практически только так и можно жить.
понедельник, ноября 20, 2006
Индексация файлов в списках
В Sharepoint 2.0 существует досадное недоразумение - документы, размещённые в списках как присоединённые файлы, не индексируются через механизм полнотекстового поиска.
С помощью форума выяснилось, что дело в вычисляемом столбце Extension таблицы Docs. Для вычисления значения этого столбца используется формула
case when [DoclibRowId] IS NOT NULL AND charindex(N'.',[LeafName] collate Latin1_General_BIN)>(0) then right([LeafName],charindex(N'.',reverse([LeafName]) collate Latin1_General_BIN)-(1)) else N'' end
Зачем был вставлен выделенный фрагмент, неизвестно (может, ошибки какие пытались исключить?), но для присоединённых файлов это условие, как раз, и выполняется.
Заменой формулы на модифицированную
case when charindex(N'.',[LeafName] collate Latin1_General_BIN)>(0) then right([LeafName],charindex(N'.',reverse([LeafName]) collate Latin1_General_BIN)-(1)) else N'' end
индексация присоединённых файлов включается и все радуются.



