{"id":62,"date":"2015-05-19T13:19:13","date_gmt":"2015-05-19T12:19:13","guid":{"rendered":"http:\/\/kolbi.cz\/blog\/?p=62"},"modified":"2017-12-15T17:04:40","modified_gmt":"2017-12-15T16:04:40","slug":"how-to-customize-citrix-receiver-for-windows","status":"publish","type":"post","link":"https:\/\/kolbi.cz\/blog\/2015\/05\/19\/how-to-customize-citrix-receiver-for-windows\/","title":{"rendered":"How to customize Citrix Receiver for Windows"},"content":{"rendered":"<p>customizing Citrix frontends\u00a0like Storefront or Netscaler has been done since a long time\u00a0and is pretty well documented on the internet. but what about the windows receiver itself? in osx you can simply edit the resources of the receiver.app (show package contents) but on windows its not that easy.<\/p>\n<p>in a recent training from my company, we customized the usual Citrix components and because i wanted to adapt my local receiver to the same look, i spent some time to find out how i can do that. this involved reverse engineering and some special tools &#8211;\u00a0but in the end i have found a way.<\/p>\n<p><a href=\"http:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2015\/05\/customized_receiver.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-64 size-full\" src=\"http:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2015\/05\/customized_receiver.jpg\" alt=\"customized_receiver\" width=\"875\" height=\"679\" srcset=\"https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2015\/05\/customized_receiver.jpg 875w, https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2015\/05\/customized_receiver-300x233.jpg 300w\" sizes=\"auto, (max-width: 875px) 100vw, 875px\" \/><\/a><\/p>\n<p><strong>CAUTION: this is not supported by Citrix and\u00a0requires modification of the Citrix Receiver binaries!<\/strong><\/p>\n<p>here is a guide, how i managed to change\u00a0the background image of the Citrix\u00a0Receiver for Windows:<\/p>\n<ol>\n<li>download ILSpy with Reflexil <a href=\"http:\/\/www.kolbi.cz\/reflexil.for.ILSpy.2.0-preview3.zip\" target=\"_blank\" rel=\"noopener\">here<\/a>\u00a0(original source:\u00a0<a href=\"http:\/\/reflexil.net\" target=\"_blank\" rel=\"noopener\">http:\/\/reflexil.net<\/a>) &#8211; ILSpy is a free .NET decompiler and Reflexil is an addon that lets you change .NET code without having its sources. this package includes both tools already.<\/li>\n<li>download Resource .NET <a href=\"http:\/\/www.kolbi.cz\/ResourceNet4.zip\" target=\"_blank\" rel=\"noopener\">here<\/a>\u00a0(original source:\u00a0<a href=\"http:\/\/fishcodelib.com\/Resource.htm\" target=\"_blank\" rel=\"noopener\">http:\/\/fishcodelib.com\/Resource.htm<\/a>) &#8211; Resource .NET is an editor for compiled .resource (.NET) files.<\/li>\n<li>now lets begin: run ilspy.exe and open SelfService.exe (usually located at\u00a0&#8220;C:\\Program Files (x86)\\Citrix\\SelfServicePlugin\\SelfService.exe&#8221;) &#8211; make sure Citrix Receiver is not running.<\/li>\n<li>in the treeview expand &#8220;SelfService&#8221;, &#8220;Resources&#8221; and select &#8220;SelfService.g.resources&#8221; &#8211; from the menu select\u00a0&#8220;View&#8221;, &#8220;Reflexil v2.0&#8221; and it will display Reflexil at the bottom of ILSpy including a hex view.<\/li>\n<li>in Reflexil, click the little disk icon to save the &#8220;SelfService.g.resource&#8221; to disk (or use File -&gt; Save to file from\u00a0the menu above the Hex view).\u00a0<a href=\"http:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2015\/05\/save_reflexil.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-71 size-medium\" src=\"http:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2015\/05\/save_reflexil-300x185.png\" alt=\"save_reflexil\" width=\"300\" height=\"185\" srcset=\"https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2015\/05\/save_reflexil-300x185.png 300w, https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2015\/05\/save_reflexil.png 966w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/li>\n<li>now open the second tool &#8220;Resource .Net&#8221; and load\u00a0the &#8220;SelfService.g.resource&#8221; file\u00a0from step 5.<\/li>\n<li>locate &#8220;wpfui\/images\/backgroundimage_big_b.png&#8221; manually or use the search function to find it.<\/li>\n<li>use the image selector button (the one\u00a0under the round Update button) to load\u00a0your desired replacement image (i only tested png files) &#8211; the size can actually be different, but its probably the best to use an image with the same resolution (2048 x 1536).<\/li>\n<li>click on the Update button and use the disk symbol to save the modified &#8220;SelfService.g.resources&#8221; file.<a href=\"http:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2015\/05\/edit_resources.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-70 size-medium\" src=\"http:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2015\/05\/edit_resources-300x252.png\" alt=\"edit_resources\" width=\"300\" height=\"252\" srcset=\"https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2015\/05\/edit_resources-300x252.png 300w, https:\/\/kolbi.cz\/blog\/wp-content\/uploads\/2015\/05\/edit_resources.png 714w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/li>\n<li>back in ILSpy select the &#8220;Load from Disk&#8221; icon or\u00a0use &#8220;File -&gt; Load from file&#8221; from\u00a0the menu above the Hex view and select the modified\u00a0&#8220;SelfService.g.resources&#8221; from step 9.<\/li>\n<li>in the treeview, right click SelfService and select Save As &#8211; Reflexil will give you the filename &#8220;SelfService.Patched.exe&#8221; &#8211; just save it like that and backup\u00a0your original SelfService.exe before you rename the patched one.<\/li>\n<\/ol>\n<p><strong>thats it! now rename the SelfService.Patched.exe to SelfService.exe and run it.<\/strong><\/p>\n<p>i did additionally replace the images with the + sign on it, because they were green and didnt match the blue background. you can find those with the\u00a0names: &#8220;wpfui\/images\/plussign_tab_hover_40px.png&#8221; and &#8220;wpfui\/images\/plussign_tab_normal_40px.png&#8221;.<\/p>\n<p>actually you can replace whatever you want with this method and in ILSpy you can even preview the images when you expand the &#8220;SelfService.g.resources&#8221; in the treeview.<\/p>\n<p>this even works with the newest technical preview of the Receiver X1, but Citrix placed\u00a0the SelfService.exe into the &#8220;ICA Client&#8221; folder instead of &#8220;SelfServicePlugin&#8221;.<\/p>\n<p>dont move\u00a0the SelfService.exe from its original location when you modify it, or the final step will not work. Reflexil needs the dependencies (dll&#8217;s) and if you move the exe\u00a0somewhere else, it cannot find them and saving the modified binary will fail.<\/p>\n<p><strong>enjoy!<\/strong><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>customizing Citrix frontends\u00a0like Storefront or Netscaler has been done since a long time\u00a0and is pretty well documented on the internet. but what about the windows <a class=\"mh-excerpt-more\" href=\"https:\/\/kolbi.cz\/blog\/2015\/05\/19\/how-to-customize-citrix-receiver-for-windows\/\" title=\"How to customize Citrix Receiver for Windows\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":64,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-62","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-citrix"],"_links":{"self":[{"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/posts\/62","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/comments?post=62"}],"version-history":[{"count":24,"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/posts\/62\/revisions"}],"predecessor-version":[{"id":464,"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/posts\/62\/revisions\/464"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/media\/64"}],"wp:attachment":[{"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/media?parent=62"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/categories?post=62"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kolbi.cz\/blog\/wp-json\/wp\/v2\/tags?post=62"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}