The site of origin is the location (i.e. the physical folder) of the application executable assembly (i.e. the .exe that the user runs). The URI is thus relative to that folder.
Example: You have
The pack URIs are pack://siteoforigin:,,,/MyIcon.bmp
and pack://siteoforigin:,,,/Icons/MyOtherIcon.bmp
when running the MyApp.exe. That means you have to copy those files to those places.
In contrast, the application pack URI refers to resources embedded in your assembly (by using Build Action "Resource").
If you do not want to be bound by the restrictions of having your application resources declared at compile time, there is another option for you. No, this doesn't involve using fully qualified Uris to reference resources over the internet. Although, that is indeed supported. WPF provides you with an abstraction for the application's conceptual site of origin i.e. the location from where the application was deployed. For instance, if your application was launched from http://nerddawg.blogspot.com , then your application's site of origin is http://nerddawg.blogspot.com . To access an image at images/AuntDahlia.gif at that location, you would specify in markup:
<Image Source="pack://siteoforigin:,,,/images/AuntDahlia.jpg" />
for more
http://nerddawg.blogspot.com/2005/11/resources-in-windows-presentation.html