Letzte Woche fand ja die ASP Konferenz – das Sharepoint Development Special in Burghausen statt. Ich hatte das Vergnügen 4 Vorträge zur Sharepoint Entwicklung abzuhalten. Bei Interesse schreibt einfach eine kurze Mail an mich (Kontakt Formular)...
Habe gerade eben jetzt mitbekommen, dass auf Office Live Workspace nun *endlich* auch die Unterstützung für eigene Ordner
mitdabei ist. Diese Funktion gibt es anscheinend schon seit Ende Februar und macht den Live Workspace nun wirklich zu einem nutzbaren Service. Zu beachten ist, dass der Dienst nach wie vor im Beta Stadium ist. Die Storage Size liegt bei 5GB.
Ebenfalls lohnt es sich, das Office Live Update 1.3 zu installieren. Das Office Live-Add-In fügt in der Microsoft Office 2007-Suite neue Menüoptionen und in Microsoft Office XP und Office 2003 eine Symbolleiste hinzu. Damit kann man Dokumente in Office Live Workspace direkt von Word, Excel und PowerPoint aus öffnen und speichern.
Wer den Service noch nicht kennt - ein Blick auf http://workspace.office.live.com genügt - und lohnt sich auf alle Fälle (Anmeldung mit Windows LiveID notwendig).
Wer hingegen Wert auf Synchronisation der Dateien auf mehrere Rechner legt, ist bei http://www.foldershare.com oder http://www.mesh.com bestens aufgehoben.
Bei der Automatisierung von Office Anwendungen kann es unter Umständen zu einem recht seltsamen Fehler kommen, wenn versucht wird die Anwendung zu starten:
1: Microsoft.Office.Interop.MSProject.ApplicationClass prApp =
2: new Microsoft.Office.Interop.MSProject.ApplicationClass();
3: prApp.Visible = true;
Laut Microsoft KB Artikel 246018 kann dies an einer Antivirus Software liegen.
Im Fall von AVG kann man folgendermaßen Abhilfe schaffen:

Danach sollte der Code tadellos laufen und der Fehler nicht mehr auftreten.
Beim Download von meiner MSDN Subscription tauchte heute das Problem auf, dass der Microsoft File Transfer Manager nicht mehr aufgerufen wurde - folglich konnte ich nichts mehr downloaden. Erst die Eingabe folgenden Befehles in der Cmdshell schaffte Abhilfe: “regsvr32 vbscript.dll”
Anmerkungen zu den Demos (Für die Demos selbst, schreibt mir ein kurzes Mail über das Kontaktformular)
Minimale MasterPage
Diese MasterPage kann als Vorlage für die Erstellung eigener Layouts für den Sharepoint Server 2007 verwendet werden. Aktiviert ist in dieser Masterpage auch die MiniConsole, welche beim Editieren der Seite eingeblendet wird. Zu beachten ist auch, dass viele ContentPlaceHolder in einem versteckten Panel am Ende der Masterpage eingefügt sind. Diese einfach bei Bedarf auf einem sichtbaren Bereich verschieben.
Application Page Sample
Eine Beispiel Applikations Seite für den Sharepoint. Diese muss in den Sharepoint Hive (C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS) kopiert werden. Danach ist die Applikations Seite über das virtuelle _layouts Verzeichnis aufrufbar.
z.B.: http://localhost/_layouts/HelloWorld/HelloWorld.aspx
Beachten: Die Applikationsseiten könnnen von allen Benutzern aufgerufen werden.
CustomActionsFeature
Hierbei handelt es sich um ein kleines Feature, welches die eingebauten Sharepoint Menüs erweitert. Den Feature Ordner nach C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES kopieren und über das stsadm Kommandozeilen Tool installieren und aktivieren.
Stsadm –o installfeature –name CustomActionsFeature
Stsadm –o activatefeature –name CustomActionsFeature –url http://localhost
Die neuen Befehle sind danach im SiteActions Menü, in den Site Settings und bei den Document Library Menüs sichtbar.
Web.Config mit Ajax und AjaxControlToolkit Unterstützung
Diese Web.config Datei stellt eine Beispiel Konfiguration des Sharepoint Servers dar, mit welcher das SmartPart für Ajax funktioniert. Mit dabei ist auch die Unterstützung für das AjaxControlTookit, welches zuvor installiert werden sollte.
SmartPart Samples
Diese Beispiel Web User Controls werden in die Sharepoint Site kopiert (C:\InetPub\wwwroot\wss\PortNummer\....). Danach fügen Sie das SmartPart with Ajax Webpart auf der Sharepoint Seite hinzu und können nun über die Eigenschaften des Webparts das gewünschte WebUserControl auswählen.
AspNetSharepointIntegration
Ein Beispiel für eine klassische ASPX Seite, welche in Sharepoint integriert wird. Solution öffnen und über Deploy installieren.
Bin gerade auf ein nettes Tool gestossen, welches die UI Elemente einer beliebigen Silverlight Application in einem Treeview darstellt, XAML extrahieren kann und die Ereignisse überwacht. Zu finden ist dieses unter Silverlight Spy.
That’s the difference:
http://channel9.msdn.com – Watch all PDC sessions for free.
http://developer.apple.com/products/video/wwdc08/index.html – Pay $999 for session videos.
Seit einiger Zeit ist der Live Messenger in einer neuen Beta Version erhältlich. Diese hat jede Menge neuer Funktionen und unterstützt nun auch das gleichzeitige Anmelden auf mehreren Rechnern.
Der Download ist hier (http://download.live.com/messenger) erhältlich.
Nachdem ich eine andere USB Schnittstelle für mein Huwaei Modem genutzt habe bekam ich von heute auf morgen keine Verbindung mit dem Internet mehr zusammen. Die Fehlermeldung lautete "Angegebene Hardwareprofilkonfiguration ungültig".
Konnte das Problem relativ schnell lösen, indem man im Geräte Manager die COM Schnittstelle für den Treiber des Huawei Modems ändert.
Geräte Manager - Modems - Huawei Mobile Connect - 3G Modem - Rechtsklick Eigenschaften - Erweitert - Anschlusseinstellungen.
Danach läuft's wieder wunderbar.
The Windows Live ID Client SDK documentation shows you quite well how to sign in silently or with the built-in dialog - yet there is a small problem if you want to use this within a Powershell cmdlet, because the threading model has to be set to Single Threaded Apartment State (STA).
The Powershell Team Blog has a good entry on how to change the threading model.
To use the Windows Live Client SDK library within a powershell cmdlet you have to start another thread and set the apartmentstate to STA, here's how to do it:
ExecutionResult class:
internal class ExecutionResult
{
private object output;
private Exception error;
public Object Output
{
get { return output; }
set { output = value; }
}
public Exception Error
{
get { return error; }
set { error = value; }
}
}
PerformWindowsLiveClientLogin:
private void PerformWindowsLiveClientLogin(object outputToWriteTo)
{
ExecutionResult result = (ExecutionResult)outputToWriteTo;
WindowsLiveClientLogin(result);
if (null != waitHandle)
{
waitHandle.Set();
}
}
WindowsLiveClientLogin:
private void WindowsLiveClientLogin(ExecutionResult result)
{
try
{
oIDMgr =
IdentityManager.CreateInstance(
"Peter Schneider;ps@ugwa.net;Windows Live Powershell CmdLets",
"Windows Live Powershell CmdLets");
}
catch (WLLogOnException wlex) { result.Error = wlex; }
try
{
oID = oIDMgr.CreateIdentity(defaultUserName);
}
catch (WLLogOnException wlex) { result.Error = wlex; }
if (oID != null)
{
if (oID.SavedCredentials == CredentialType.UserNameAndPassword)
{
try
{
if (oID.Authenticate(AuthenticationType.Silent))
{
// User authenticated successfully
}
else
{
// Show Windows Live Client Login Dialog
oID.Authenticate();
}
}
catch (WLLogOnException wlex) { result.Error = wlex; }
}
else
{
// Insufficient credentials saved for user,
// show Windows Live Client Login Dialog
oID.Authenticate();
}
}
try
{
ticket = oID.GetTicket("https://cumulus.services.live.com/"
+ oID.UserName, "MBI", true);
}
catch (WLLogOnException wlex) { result.Error = wlex; }
}
BeginProcessing:
protected override void BeginProcessing()
{
ExecutionResult result = new ExecutionResult();
Thread executionThread =
new Thread(new ParameterizedThreadStart(PerformWindowsLiveClientLogin));
executionThread.SetApartmentState(ApartmentState.STA);
waitHandle = new ManualResetEvent(false);
executionThread.Start(result);
waitHandle.WaitOne();
string uri = @"https://cumulus.services.live.com/"+oID.UserName+"/LiveContacts/Contacts";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Headers.Add("Authorization", "WLID1.0 t=\"" + ticket +"\"");
request.AllowAutoRedirect = false;
request.UserAgent = "WindowsLive.Contacts Powershell CmdLets";
request.ContentType = "text/xml";
request.Pipelined = false;
request.ProtocolVersion = HttpVersion.Version10;
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
XmlDocument contacts = new XmlDocument();
contacts.LoadXml(new StreamReader(response.GetResponseStream()).ReadToEnd());
WriteObject(contacts);
}
You can download the whole source for the CmdLet here:
Install the
Windows Live Client SDK, compile the cmdlet and afterwards use:
installutil /i WindowsLive.Contacts
add-pssnapin WindowsLive.Contacts
to use the cmdlet in powershell. If installing on Vista, please remember to run powershell as Administrator.
Here are some sample scripts to get started:
Enumerate all WindowsLive Contacts using Windows Live Client SDK Login Dialog:
$result = get-windowslivecontact
$result.Contacts.Contact | select WindowsLiveId
Enumerate all WindowsLive Contacts using Silent Login:
$result = get-windowslivecontact -WindowsLiveId "your@liveid.com"
$result.Contacts.Contact | select WindowsLiveId
Show WindowsLiveId from several Windows Live Accounts using SilentLogin
"first@live.com", "second@live.com" | % { get-windowslivecontact -WindowsLiveId $_ } | select WindowsLiveId
The Cmdlet returns the XmlDocument, which can easily be accessed via dot notation:
$result = get-windowslivecontact
$result.Contacts.Contact[0].Profiles.Personal
If you don't want to use the Windows Live Client SDK, take a look at this sample, which uses a RPS ticket for authentication - you can easily adopt the sample.
There are many things you could add to this sample. Use it as a starting point - yet I would be happy to here from extensions.. 
More Posts
Next page »