<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jeroen Heijster</title>
	<atom:link href="https://jeroenheijster.nl/feed/" rel="self" type="application/rss+xml" />
	<link>https://jeroenheijster.nl</link>
	<description>Blogging</description>
	<lastBuildDate>Fri, 14 Aug 2026 08:36:44 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.4</generator>
	<item>
		<title>An update to &#8220;Dark side of Kickstarter, Magic Box-S1 and The One – Fidget Spinner Cube highlighted&#8221;</title>
		<link>https://jeroenheijster.nl/an-update-to-dark-side-of-kickstarter-magic-box-s1-and-the-one-fidget-spinner-cube-highlighted/</link>
					<comments>https://jeroenheijster.nl/an-update-to-dark-side-of-kickstarter-magic-box-s1-and-the-one-fidget-spinner-cube-highlighted/#respond</comments>
		
		<dc:creator><![CDATA[mjheijster]]></dc:creator>
		<pubDate>Thu, 13 Aug 2026 21:52:58 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://jeroenheijster.nl/?p=12749</guid>

					<description><![CDATA[I posted recently how &#8220;The One – Fidget Spinner Cube&#8221; had weird claims like having a decade of work behind it while not being searchable on the internet. Especially since the kickstarter page looks like the Magic Box-S1, which seems to have scammed all backers. Well, gee, do I have a nice update for you. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://jeroenheijster.nl/dark-side-of-kickstarter/" data-type="link" data-id="https://jeroenheijster.nl/dark-side-of-kickstarter/">I posted recently how &#8220;The One – Fidget Spinner Cube&#8221; had weird claims like having a decade of work behind it while not being searchable on the internet. Especially since the kickstarter page looks like the Magic Box-S1, which seems to have scammed all backers.</a></p>



<p class="wp-block-paragraph">Well, gee, do I have a nice update for you. Kickstarter reviewed my report and found nothing wrong.</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="634" height="790" src="https://jeroenheijster.nl/wp-content/uploads/2026/08/image-5.png" alt="" class="wp-image-12750" srcset="https://jeroenheijster.nl/wp-content/uploads/2026/08/image-5.png 634w, https://jeroenheijster.nl/wp-content/uploads/2026/08/image-5-241x300.png 241w" sizes="(max-width: 634px) 100vw, 634px" /></figure>



<p class="wp-block-paragraph">So yeah, screw the customer I guess. The comments tab now shows 13 comments while only showing 10. So 3 were removed including mine. I guess I should just give up on Kickstarter as a whole.</p>



<h1 class="wp-block-heading">Links to the 2 campaigns:</h1>



<p class="wp-block-paragraph"><a href="https://www.kickstarter.com/projects/sb-s/magic-box-s1-a-fingertip-aluminum-toy">https://www.kickstarter.com/projects/sb-s/magic-box-s1-a-fingertip-aluminum-toy</a></p>



<p class="wp-block-paragraph"><a href="https://www.kickstarter.com/projects/1555376118/the-one-fidget-spinner-cube">https://www.kickstarter.com/projects/1555376118/the-one-fidget-spinner-cube</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://jeroenheijster.nl/an-update-to-dark-side-of-kickstarter-magic-box-s1-and-the-one-fidget-spinner-cube-highlighted/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Dark side of Kickstarter, Magic Box-S1 and The One &#8211; Fidget Spinner Cube highlighted</title>
		<link>https://jeroenheijster.nl/dark-side-of-kickstarter/</link>
					<comments>https://jeroenheijster.nl/dark-side-of-kickstarter/#respond</comments>
		
		<dc:creator><![CDATA[mjheijster]]></dc:creator>
		<pubDate>Thu, 06 Aug 2026 10:51:47 +0000</pubDate>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Kickstarter]]></category>
		<category><![CDATA[Magic Box-S1]]></category>
		<category><![CDATA[The One]]></category>
		<guid isPermaLink="false">https://jeroenheijster.nl/?p=12731</guid>

					<description><![CDATA[I&#8217;ve been a user of Kickstarter for a long time now. Over the last 15 years, I&#8217;ve backed over 200 projects. Sometimes you get a great deal, sometimes it doesn&#8217;t work out. I get it. As long as someone really tried to get the project going and the funding runs dry, that&#8217;s a shame, but [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">I&#8217;ve been a user of Kickstarter for a long time now. Over the last 15 years, I&#8217;ve backed over 200 projects. Sometimes you get a great deal, sometimes it doesn&#8217;t work out. I get it. As long as someone really tried to get the project going and the funding runs dry, that&#8217;s a shame, but that&#8217;s part of the risk.</p>



<p class="wp-block-paragraph">The big issue I&#8217;ve got with Kickstarter is that they take no accountability when something is a scam. Even reporting a project often does nothing, you don&#8217;t even receive a message that they are looking into it or that they didn&#8217;t see a problem.</p>



<h1 class="wp-block-heading">Magic Box-S1</h1>



<p class="wp-block-paragraph">One of those projects is the <a href="https://www.kickstarter.com/projects/sb-s/magic-box-s1-a-fingertip-aluminum-toy/comments">Magic Box-S1</a>. This was supposed to be a fidget toy. It looked cool, so I decided to back it. </p>



<figure class="wp-block-image size-full"><img decoding="async" width="680" height="862" src="https://jeroenheijster.nl/wp-content/uploads/2026/08/image.png" alt="" class="wp-image-12734" srcset="https://jeroenheijster.nl/wp-content/uploads/2026/08/image.png 680w, https://jeroenheijster.nl/wp-content/uploads/2026/08/image-237x300.png 237w" sizes="(max-width: 680px) 100vw, 680px" /></figure>



<p class="wp-block-paragraph">The creator was active in the comments so it seemed fine at the time. When the project was funded, we got a thanks project update in July of 2024 and a survey in August 2024. This had some up-sell options and it seemed to be going well. In September we even got an update that it was in production, so far so good. </p>



<p class="wp-block-paragraph">In October, we got an update apologizing for a delay, a problem with the molds. Weird, but okay, that can happen. Then&#8230; There was silence. </p>



<p class="wp-block-paragraph">In May of 2025, we got an update stating that the goods had arrived, but that the U.S. backers would have to pay part of the new tariffs.  Attached to that post was a video of generic cardboard boxes on pallets, claiming the products were in there.</p>



<p class="wp-block-paragraph">In July, there were new developments, 10 months after the supposed delivery date. Not they finally could begin full assembly of the final products. The second shipment would begin around the 30th of July. Second shipment would imply a first shipment, but I see no evidence that anything was shipped and nobody has commented that they received anything. </p>



<p class="wp-block-paragraph">In October of 2025, we got the final update, &#8220;Today, we are relieved to share a positive update: The second batch of trial production units has successfully passed 100% of our quality inspections, including performance, stability, and durability tests. We hereby officially confirm that shipment is scheduled for November.&#8221;, and to this day, we have nothing.</p>



<h1 class="wp-block-heading">The One &#8211; Fidget Spinner Cube</h1>



<p class="wp-block-paragraph">To multiple backer&#8217;s surprise and mine, a really similar looking product page appeared for a new product. The One &#8211; Fidget Spinner Cube. </p>



<figure class="wp-block-image size-large"><img decoding="async" width="558" height="1024" src="https://jeroenheijster.nl/wp-content/uploads/2026/08/image-1-558x1024.png" alt="" class="wp-image-12736" srcset="https://jeroenheijster.nl/wp-content/uploads/2026/08/image-1-558x1024.png 558w, https://jeroenheijster.nl/wp-content/uploads/2026/08/image-1-163x300.png 163w, https://jeroenheijster.nl/wp-content/uploads/2026/08/image-1.png 680w" sizes="(max-width: 558px) 100vw, 558px" /></figure>



<p class="wp-block-paragraph">Promoted on the same platforms as the Magic Box-S1, also a new creator with no projects before it and also located in the US according to the page with a name that sounds really Chinese. Obviously, the latter doesn&#8217;t have to be an issue, but the similarities are absolutely there.</p>



<p class="wp-block-paragraph">So I did what anyone could do, I looked the company up, and couldn&#8217;t find anything. So I backed the project at $1 and asked in the comments.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="887" height="992" src="https://jeroenheijster.nl/wp-content/uploads/2026/08/image-2.png" alt="" class="wp-image-12737" srcset="https://jeroenheijster.nl/wp-content/uploads/2026/08/image-2.png 887w, https://jeroenheijster.nl/wp-content/uploads/2026/08/image-2-268x300.png 268w, https://jeroenheijster.nl/wp-content/uploads/2026/08/image-2-768x859.png 768w" sizes="auto, (max-width: 887px) 100vw, 887px" /></figure>



<p class="wp-block-paragraph">And guess what, my pledge was immediately cancelled and I was banned from the project. Comment was gone.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="956" height="115" src="https://jeroenheijster.nl/wp-content/uploads/2026/08/image-3.png" alt="" class="wp-image-12738" srcset="https://jeroenheijster.nl/wp-content/uploads/2026/08/image-3.png 956w, https://jeroenheijster.nl/wp-content/uploads/2026/08/image-3-300x36.png 300w, https://jeroenheijster.nl/wp-content/uploads/2026/08/image-3-768x92.png 768w" sizes="auto, (max-width: 956px) 100vw, 956px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="543" height="553" src="https://jeroenheijster.nl/wp-content/uploads/2026/08/image-4.png" alt="" class="wp-image-12739" srcset="https://jeroenheijster.nl/wp-content/uploads/2026/08/image-4.png 543w, https://jeroenheijster.nl/wp-content/uploads/2026/08/image-4-295x300.png 295w" sizes="auto, (max-width: 543px) 100vw, 543px" /></figure>



<p class="wp-block-paragraph">Obviously this is no proof that it is the same group and that they are scammers, it just shows that it most likely is due to how fast they removed me after asking a simple question. I didn&#8217;t accuse them, I only asked for more information.</p>



<p class="wp-block-paragraph">A real design firm with a decade of work behind it wouldn&#8217;t need to refund-and-block someone for pointing out they can&#8217;t find that work. That&#8217;s not how you handle a question if you&#8217;ve got nothing to hide. Refunding and blocking is how you make an inconvenient comment disappear before other backers see it.</p>



<h1 class="wp-block-heading">In closing</h1>



<p class="wp-block-paragraph">So yeah, I really want more accountability from Kickstarter. Both projects have been reported and I have reported multiple projects in the past. But they never even respond. I just cannot fully trust this platform.</p>



<p class="wp-block-paragraph">While Indiegogo also has issues, they at least shut down the ability to pledge for WHYTRIP after they were contacted because it was clear that they were not communicating and were most likely scamming. WHYTRIP was supposed to deliver in November of 2024, nothing yet.</p>



<h1 class="wp-block-heading">Links to the 2 campaigns:</h1>



<p class="wp-block-paragraph"><a href="https://www.kickstarter.com/projects/sb-s/magic-box-s1-a-fingertip-aluminum-toy">https://www.kickstarter.com/projects/sb-s/magic-box-s1-a-fingertip-aluminum-toy</a></p>



<p class="wp-block-paragraph"><a href="https://www.kickstarter.com/projects/1555376118/the-one-fidget-spinner-cube">https://www.kickstarter.com/projects/1555376118/the-one-fidget-spinner-cube</a></p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://jeroenheijster.nl/dark-side-of-kickstarter/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Man, I miss Windows Phone&#8230;</title>
		<link>https://jeroenheijster.nl/man-i-miss-windows-phone/</link>
					<comments>https://jeroenheijster.nl/man-i-miss-windows-phone/#respond</comments>
		
		<dc:creator><![CDATA[mjheijster]]></dc:creator>
		<pubDate>Sun, 30 Jun 2024 14:00:16 +0000</pubDate>
				<category><![CDATA[Blogs]]></category>
		<guid isPermaLink="false">https://jeroenheijster.com/?p=12647</guid>

					<description><![CDATA[Going through my old posts, I noticed a screenshot of Windows Phone. It made me realize that I actually really miss the platform.]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Going through my old posts, I noticed a screenshot of Windows Phone. It made me realize that I actually really miss the platform.</p>



<p class="wp-block-paragraph"><sub>This is not financial advice.</sub></p>


<div class="wp-block-image">
<figure class="alignleft size-full is-resized"><img decoding="async" src="/wp-content/uploads/2012/05/WindowsPhone7seriesUI.jpg" alt="" class="wp-image-206" style="width:413px;height:auto"/></figure>
</div>


<h2 class="wp-block-heading">Underpowered but buttery smooth</h2>



<p class="wp-block-paragraph">The hardware of the Windows Phones were never really <em>that </em>good. Android phones and iPhones used better SoCs, yet despite that, Windows Phone always had a buttery smooth experience. Certainly better than the Android phones of that era. Part of this is the way it used resources and forced best practices to developers.</p>



<p class="wp-block-paragraph">One of those things was Tombstoning. A way for apps to save their state when they&#8217;re closed by the OS and restoring that state when it is opened again, allowing it to resume seamlessly when the user returns to it. The user will not notice that the app itself was closed, but the phone conserves its resources.</p>



<h2 class="wp-block-heading">Project my screen</h2>



<p class="wp-block-paragraph">Ironically, Project My Screen was what nudged my memory on Windows Phone. A nice tool to control Windows Phone 8.1 devices from your computer. You could see what was on your phone, either wirelessly or through USB and even control the apps you had on your phone. I had <a href="https://jeroenheijster.com/project-screen-working/" data-type="post" data-id="1815">some issues with it way back when, which required me to delete the drivers and reinstall them</a>. A feature that I still really miss on my Android phone.</p>



<h2 class="wp-block-heading">The app problem</h2>



<p class="wp-block-paragraph">One of the biggest issues with Windows Phone, was obviously the lack of apps. Even though they paid developers to create apps, it sadly was not enough. Google, famously, sabotaged Microsoft where they could. Google refused to work on an YouTube client, so eventually Microsoft made one. Google blocked it because it did not implement ads. The problem here was that there was no way for Microsoft to implement that, because Google never gave them an option to. </p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">“Despite government scrutiny, Google continues to block Microsoft from offering its customers proper access to YouTube. This is an important issue because consumers value YouTube access on their phone: YouTube apps on the Android and Apple platforms were two of the most downloaded mobile applications in 2012, according to recent news reports. Yet Google still refuses to allow Windows Phone users to have the same access to YouTube that Android and Apple customers enjoy. Microsoft has continued to engage with YouTube personnel over the past two years to remedy this problem for consumers. As you might expect, it appears that YouTube itself would like all customers – on Windows Phone as on any other device – to have a great YouTube experience. But just last month we learned from YouTube that senior executives at Google told them not to enable a first-class YouTube experience on Windows Phones.” &#8211; Dave Heiner then Vice President &amp; Deputy General Counsel, Microsoft</p>
</blockquote>



<p class="wp-block-paragraph">And even the app that they released shortly, was regularly broken by the changes in Google&#8217;s APIs that they didn&#8217;t communicate.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">When it comes to ads, Howard claimed that Microsoft&#8217;s app served Google ads based on metadata made available to the Redmond, Wash. company. Though Microsoft asked Google to provide the same information given to iPhone and Android so it could mirror how ads appear on these platforms, &#8220;Google has refused to give this information to us.&#8221;</p>
<cite><a href="https://www.techradar.com/news/software/applications/microsoft-google-s-reasons-for-blocking-youtube-app-manufactured-1173448">https://www.techradar.com/news/software/applications/microsoft-google-s-reasons-for-blocking-youtube-app-manufactured-1173448</a></cite></blockquote>



<h2 class="wp-block-heading">Continuum</h2>



<p class="wp-block-paragraph">And then there was the thing that obviously wasn&#8217;t ready for prime time back then. The promise to have someone connect their phone to a monitor, keyboard and mouse and turn the phone into a makeshift PC. When docked, the phone would switch to a tailored desktop-like experience on the external display, while still maintaining its regular functionality on the phone screen. It didn&#8217;t get widespread adoption and Microsoft discontinued it. </p>



<p class="wp-block-paragraph">With programs being compiled for ARM more readily now, and the performance of phones, having desktop apps running off of phones could&#8217;ve been a possibility now. Especially with Surface devices running on ARM properly and Apple using ARM for their devices.</p>



<h2 class="wp-block-heading">It&#8217;s a shame</h2>



<p class="wp-block-paragraph">I really liked the platform. I do think it released too late. If it released a couple of years earlier, they might&#8217;ve had a much larger market share. Even with the release date they had, I wish they wouldn&#8217;t have given up. <a href="https://www.theverge.com/2023/10/24/23930478/microsoft-ceo-satya-nadella-mobile-windows-phone" data-type="link" data-id="https://www.theverge.com/2023/10/24/23930478/microsoft-ceo-satya-nadella-mobile-windows-phone">Something even CEO Satya Nadella says he regrets</a>. </p>



<p class="wp-block-paragraph">I guess they could still relaunch it. If they offer a superior experience in every way, hey, I might switch. But it&#8217;s hard to get people out of their habits. Still, if they do it, I&#8217;ll be first in line as a developer.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jeroenheijster.nl/man-i-miss-windows-phone/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>New job</title>
		<link>https://jeroenheijster.nl/new-job/</link>
					<comments>https://jeroenheijster.nl/new-job/#respond</comments>
		
		<dc:creator><![CDATA[mjheijster]]></dc:creator>
		<pubDate>Sat, 22 Jun 2024 13:36:18 +0000</pubDate>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[devoteam]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[work]]></category>
		<guid isPermaLink="false">https://jeroenheijster.com/?p=12615</guid>

					<description><![CDATA[Transitioning from working directly for a company, I moved on to working with customers at my job’s location and occasionally being on-site. Now, I’ve transitioned into consultancy.]]></description>
										<content:encoded><![CDATA[<div class="wp-block-image">
<figure class="alignleft size-medium"><img decoding="async" src="/wp-content/uploads/2024/06/devodoor-232x300.jpg" alt="" class="wp-image-12630"/></figure>
</div>


<p class="wp-block-paragraph">Transitioning from working directly for a company, I moved on to working with customers at my job’s location and occasionally being on-site. Now, I’ve transitioned into consultancy. As of last month, I am a Senior Consultant at Devoteam’s M Cloud. I’m still building in C#, still using .NET, and still aiming for full-stack. Obviously, consultancy will mean that I will work on a variety of different projects, some short, some long, and the technology I use may vary.</p>



<h2 class="wp-block-heading">Starting days</h2>



<p class="wp-block-paragraph">Still, no matter how many times you change jobs, it&#8217;s still a weird experience. You show up, have an internal training first day and then you get to work, right? Well, with consultancy, you first need to get a project. Which might take a couple of weeks.. Or in my case, I had a client next day. Not just any client, a breeder and researcher into vegetable seeds, operating in more than 30 countries with over 2200 employees. It took a while for me to actually get started. Getting through documentation, going through the flowcharts, getting permissions, etc. But eventually I got to work on their integrations, helping their internal development team, refactoring and also building new Azure Functions. The challenge with integrations always is the dependency on the other systems. </p>



<h2 class="wp-block-heading">Obviously, we have some issues</h2>



<p class="wp-block-paragraph">Close to testing day, we discovered that if a new item was added but not published, the system would send out a new event. This new event would trigger a function to get the data so it could be pushed to the target system. The problem here is that the item is not published, so it can’t be fetched yet. When the item was published, it would send out an update event, which meant we would get the item (which now succeeded), and try to update the record in the target system, which failed since it didn’t have the item. So, changes have to be made in the source system.</p>



<h2 class="wp-block-heading">Next assignment</h2>



<p class="wp-block-paragraph">What was supposed to be a job for about a month got extended to 2 months, then 2.5 months, but now it seems like it might be coming to a close sooner than that.</p>



<p class="wp-block-paragraph">This means that we&#8217;re already looking for another assignment. So I&#8217;ve applied to 1 assignment, which also would mean going to the client wouldn&#8217;t take close to 2.5 hours of travel, but instead would be close to me. Sadly, I didn&#8217;t get that assignment, we&#8217;ll see what happens next.</p>



<h2 class="wp-block-heading">Perks of the job</h2>



<p class="wp-block-paragraph">In the meantime, we do have some good perks. Like many offices, there’s fresh fruit, but there often are snacks, like Indonesian Bakwan Jagung, Moroccan sweets, or Vietnamese spring rolls. The coffee here is also better than at any office I’ve worked at so far!</p>



<p class="wp-block-paragraph">It seems like I joined at the right time. If I had joined a month later, I would’ve missed the great Korean BBQ we went to. Ironically, it was organized by the person who was, at the time, in Korea for a holiday. He was missed, but we had great food and even better colleagues there.</p>



<p class="wp-block-paragraph">Outside of the team outing, we also have department bonding days. Last month’s bonding day was cancelled, but I do look forward to the knowledge sessions (and free food). Young Devoteam also organizes their own events, like a padel evening (ironically during the Korean BBQ).</p>



<h2 class="wp-block-heading">Learning</h2>



<p class="wp-block-paragraph">At Devoteam there&#8217;s an emphasis on growth and learning. This was clear since even before I worked here, as in my third interview round it was made clear I&#8217;d have to get certified and keep up to date with relevant knowledge. In the first weeks, it was clear what my objectives would be in my first year and what was available to reach that. Since I also have a bit of fear of failure when it comes to exams, that was also talked about and reassured.</p>



<h2 class="wp-block-heading">So what now?</h2>



<p class="wp-block-paragraph">While I have left previous jobs for various reasons, including feeling like the company didn&#8217;t care about me, being bored because I was on the same assignment for too long, I feel like this may not be the case in this consultancy role. So, onward we go!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jeroenheijster.nl/new-job/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Logging hit line number and method</title>
		<link>https://jeroenheijster.nl/logging-hit-line-number-and-method/</link>
					<comments>https://jeroenheijster.nl/logging-hit-line-number-and-method/#respond</comments>
		
		<dc:creator><![CDATA[mjheijster]]></dc:creator>
		<pubDate>Thu, 20 Jun 2019 09:15:20 +0000</pubDate>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[hit]]></category>
		<category><![CDATA[line]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[number]]></category>
		<guid isPermaLink="false">http://www.jeroenheijster.nl/?p=12090</guid>

					<description><![CDATA[During debugging I had issues figuring out where my code just stopped. Since I had no debugging methods on that server, I wanted to create a better way of logging than int count=0;Console.WriteLine(count++); While looking for a way of logging the line number I found the CompilerServices namespace which has a CallerLineNumber and CallerMemberName. Using [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">During debugging I had issues figuring out where my code just stopped. Since I had no debugging methods on that server, I wanted to create a better way of logging than int count=0;Console.WriteLine(count++);</p>



<p class="wp-block-paragraph">While looking for a way of logging the line number I found the <a href="https://docs.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices?view=netframework-4.8">CompilerServices </a>namespace which has a <a href="https://docs.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.callerlinenumberattribute?view=netframework-4.8">CallerLineNumber</a> and <a href="https://docs.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.callermembernameattribute?view=netframework-4.8">CallerMemberName</a>.</p>



<p class="wp-block-paragraph">Using that, I made this small method to log the method and line number:</p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#F8F8F2;--cbp-line-number-width:calc(1 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#272822"><span style="background:#efefe1;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#272822">C#</span></span><span role="button" tabindex="0" style="color:#F8F8F2;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>private void LogLineNumber(&#91;System.Runtime.CompilerServices.CallerLineNumber&#93; int lineNumber = 0, &#91;System.Runtime.CompilerServices.CallerMemberName&#93; string caller = null)
{
Console.WriteLine($"Hit line number {lineNumber} for {caller}.");
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki monokai" style="background-color: #272822" tabindex="0"><code><span class="line"><span style="color: #F92672">private</span><span style="color: #F8F8F2"> </span><span style="color: #F92672">void</span><span style="color: #F8F8F2"> </span><span style="color: #A6E22E">LogLineNumber</span><span style="color: #F8F8F2">(&#91;</span><span style="color: #A6E22E; text-decoration: underline">System</span><span style="color: #F8F8F2">.</span><span style="color: #A6E22E; text-decoration: underline">Runtime</span><span style="color: #F8F8F2">.</span><span style="color: #A6E22E; text-decoration: underline">CompilerServices</span><span style="color: #F8F8F2">.</span><span style="color: #A6E22E; text-decoration: underline">CallerLineNumber</span><span style="color: #F8F8F2">&#93; </span><span style="color: #F92672">int</span><span style="color: #F8F8F2"> lineNumber </span><span style="color: #F92672">=</span><span style="color: #F8F8F2"> </span><span style="color: #AE81FF">0</span><span style="color: #F8F8F2">, &#91;</span><span style="color: #A6E22E; text-decoration: underline">System</span><span style="color: #F8F8F2">.</span><span style="color: #A6E22E; text-decoration: underline">Runtime</span><span style="color: #F8F8F2">.</span><span style="color: #A6E22E; text-decoration: underline">CompilerServices</span><span style="color: #F8F8F2">.</span><span style="color: #A6E22E; text-decoration: underline">CallerMemberName</span><span style="color: #F8F8F2">&#93; </span><span style="color: #F92672">string</span><span style="color: #F8F8F2"> caller </span><span style="color: #F92672">=</span><span style="color: #F8F8F2"> </span><span style="color: #AE81FF">null</span><span style="color: #F8F8F2">)</span></span>
<span class="line"><span style="color: #F8F8F2">{</span></span>
<span class="line"><span style="color: #F8F8F2">Console.</span><span style="color: #A6E22E">WriteLine</span><span style="color: #F8F8F2">(</span><span style="color: #E6DB74">$&quot;Hit line number {</span><span style="color: #F8F8F2">lineNumber</span><span style="color: #E6DB74">} for {</span><span style="color: #F8F8F2">caller</span><span style="color: #E6DB74">}.&quot;</span><span style="color: #F8F8F2">);</span></span>
<span class="line"><span style="color: #F8F8F2">}</span></span></code></pre></div>
]]></content:encoded>
					
					<wfw:commentRss>https://jeroenheijster.nl/logging-hit-line-number-and-method/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The problem with &#8220;lifetime&#8221; updates for software</title>
		<link>https://jeroenheijster.nl/the-problem-with-lifetime-updates-for-software/</link>
					<comments>https://jeroenheijster.nl/the-problem-with-lifetime-updates-for-software/#respond</comments>
		
		<dc:creator><![CDATA[mjheijster]]></dc:creator>
		<pubDate>Fri, 15 Sep 2017 12:08:45 +0000</pubDate>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[lifetime]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Symless]]></category>
		<category><![CDATA[Synergy]]></category>
		<category><![CDATA[updates]]></category>
		<guid isPermaLink="false">http://www.jeroenheijster.nl/?p=12052</guid>

					<description><![CDATA[While I love the thought of lifetime access to software, it always poses a bit of a problem. Long-term development. I love the idea of lifetime access to software. From Malwarebytes to Bandicam and Synergy by Symless. You pay once and get all updates for free. The problem comes when the company runs out of [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><em>While I love the thought of lifetime access to software, it always poses a bit of a problem. Long-term development.</em></p>
<p><span id="more-12052"></span></p>
<p>I love the idea of lifetime access to software. From Malwarebytes to Bandicam and Synergy by Symless. You pay once and get all updates for free. The problem comes when the company runs out of money or is close to that.</p>
<p>Yesterday I woke up to find out software I use, Synergy, has an upgrade offer:</p>
<p><figure id="attachment_12058" aria-describedby="caption-attachment-12058" style="width: 871px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="wp-image-12058 size-full" src="/wp-content/uploads/2017/09/2017-09-14_13h45_44.png" alt="" width="871" height="352" /><figcaption id="caption-attachment-12058" class="wp-caption-text">PAY US for a FREE update</figcaption></figure></p>
<p>Basically, they&#8217;re saying <em>pay now and get a free update later</em>. While this may sound nice when you glance over it, the moment you think about it, you realize that you&#8217;re just pre-ordering at a discount.</p>
<p>The problem was though, that I know it was listed as lifetime before, I went to their site and indeed, it now lists purchases for v1.x only. Just to make sure I wasn&#8217;t crazy, I set the <a href="https://web.archive.org/web/20151205154613/https://synergy-project.org/pricing">wayback machine to 2015</a>, the year I purchased it. I was not completely surprised that it did say <strong>lifetime</strong> access there and that it was a <strong>one time payment</strong>.</p>
<p><figure id="attachment_12053" aria-describedby="caption-attachment-12053" style="width: 566px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="wp-image-12053 size-full" src="/wp-content/uploads/2017/09/2017-09-14_13h08_56.png" alt="" width="566" height="272" /><figcaption id="caption-attachment-12053" class="wp-caption-text">Old pricing</figcaption></figure></p>
<p><figure id="attachment_12054" aria-describedby="caption-attachment-12054" style="width: 398px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="wp-image-12054 size-full" src="/wp-content/uploads/2017/09/2017-09-14_13h08_13.png" alt="" width="398" height="184" /><figcaption id="caption-attachment-12054" class="wp-caption-text">New pricing</figcaption></figure></p>
<p style="text-align: left;">I also went digging into the site through the wayback machine and could not find any hints that this was only for v1.x.</p>
<p>So I searched on Twitter if people have reported this before. Someone else had also reported this. After tweeting them the following and getting a reply:</p>
<p>&nbsp;</p>
<blockquote class="twitter-tweet" data-lang="en">
<p dir="ltr" lang="en">Hey Jeroen, we&#8217;ve sent you an email!</p>
<p>— Symless (@Symless) <a href="https://twitter.com/Symless/status/908275070795120640">September 14, 2017</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>After searching my mail accounts, since it was sent to the wrong e-mail account (I have a pro license and a basic license on different accounts, they sent it to the one I have the basic on), it took me a while to find the mail. What I received in the mail was an apology because they &#8220;didn&#8217;t make it clear from the start&#8221;. They gave my access to their &#8220;new&#8221; Synergy 2 Pro product for free. While this initially seem like a good offer, the same issue will happen with version 3 and onwards.</p>
<p>The problem with changing it from lifetime to &#8220;lifetime&#8221; for this major version is that they did it without informing us and NOT grandfathering us into a real lifetime option. I understand that they also need to make money, but this is NEVER a good idea.</p>
<p>It&#8217;s almost like selling me a lifetime supply of donuts, that I come back after a year and the vendor saying &#8220;oh sorry, that&#8217;s no longer valid, we added sprinkles on the donuts so it&#8217;s a totally different product now&#8221;.</p>
<p>We&#8217;ve seen the backlash that, for example, Roboform got when they no longer honored their lifetime licenses, same with Cerberus (although those lifetime licenses were given out as a promotion, they offered a paid upgrade to keep it as a lifetime license). Malwarebytes on the other hand actually honored the old licenses and simply stopped selling them.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jeroenheijster.nl/the-problem-with-lifetime-updates-for-software/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Support is sometimes the worst.</title>
		<link>https://jeroenheijster.nl/support-is-sometimes-the-worst/</link>
					<comments>https://jeroenheijster.nl/support-is-sometimes-the-worst/#respond</comments>
		
		<dc:creator><![CDATA[mjheijster]]></dc:creator>
		<pubDate>Fri, 23 Jun 2017 08:19:37 +0000</pubDate>
				<category><![CDATA[Gaming]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[worst]]></category>
		<guid isPermaLink="false">http://www.jeroenheijster.nl/?p=12044</guid>

					<description><![CDATA[While companies usually want to help, sometimes you just hit a brick wall. The first-line support agent is helpful, but when it goes further than that, well... ]]></description>
										<content:encoded><![CDATA[<p>While companies usually want to help, sometimes you just hit a brick wall. In my case the first-line support agent is helpful, but when it goes further than that, well&#8230;</p>
<p>Almost a month ago, I tried to contact Pokémon support for the game Magikarp Jump. While it&#8217;s a silly game, I can&#8217;t open the in-game store page. It just gets stuck with the following message:</p>
<p><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-12045" src="/wp-content/uploads/2017/06/Screenshot_20170623-093854-169x300.png" alt="" width="169" height="300" /></p>
<p>Thanks to the helpful &#8220;Support&#8221; button on the launch screen, I knew I needed to provide the Support ID and create a ticket. So I provided the following:</p>
<blockquote><p>Hello,<br />
Support ID &lt;redacted&gt;<br />
I&#8217;ve been trying for a couple of days to access the store again. I could the first time, but didn&#8217;t purchase anything. Now I just get the message &#8220;now transmitting&#8221; and it won&#8217;t load. I&#8217;ve tried to backup, uninstall, reinstall and restore my data, but I have had no luck. Any idea what it can be?<br />
Regards,<br />
Jeroen Heijster</p></blockquote>
<p>After 3 days, I received a reply asking for more info:</p>
<blockquote><p>Hello Trainer,<br />
Thank you for contacting Pokémon Support! We understand you are having some issues with Magikarp Jump. Please provide us the following information so we may look into this further:<br />
Support ID:<br />
Device (Please include Model Number):<br />
Android or iOS?<br />
What OS version?<br />
What time did the issue occur? (Please include time zone):<br />
Details regarding your issues (Please give as much detail as possible, the more details, the better.):<br />
<strong>If you are able to take any screenshots, please include them as they can be very helpful.<br />
</strong>Thank you for playing Pokémon!<br />
Sincerely,<br />
The Pokémon Company International Support Team</p></blockquote>
<p>Now, I&#8217;ll admit that I missed some of those details (none were actually asked when opening the ticket), some actually were, like the details regarding the issue and the Support ID.</p>
<p>Since I provided the Support ID, I assumed that they&#8217;d at least have the device model, OS and OS version. According to their <a href="http://www.apppokemon.com/koiking/webview/kiyaku/kiyaku002/policy.html">privacy policy</a> they log device hardware and software data, so it&#8217;s a bit odd, but oh well. After I supplied them with 3 screenshots of the same screen with the animation just a bit different (and a clock showing it goes on for over 15 minutes) and the screenshot listed below, I had to wait again.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-medium wp-image-12046" src="/wp-content/uploads/2017/06/received_1484075364949304-225x300.jpeg" alt="" width="225" height="300" /></p>
<p>The same day it got escalated to a &#8220;dedicated&#8221; team. Due to high ticket volumes, a resolution may take longer than normal. The weird thing is, that they don&#8217;t express what the normal resolution time is.</p>
<p>After just a week, I got the following &#8220;solution&#8221;:</p>
<blockquote><p>Hello Trainer,<br />
Thank you for contacting Pokémon Support! We understand you are receiving an error when trying to connect to the store. The development teams recommends the following:</p>
<p>&#8211; Please confirm that your game was downloaded from the correct Google Play/Apple account.<br />
&#8211; Check with Google/Apple to make sure previous purchases are completed<br />
&#8211; If your OS is not the latest, please update the OS on your device.</p>
<p>At this time, there is no other method to help solve this issue. We apologize for the inconvenience.</p>
<p>Thank you for playing Pokémon!<br />
Sincerely,<br />
The Pokémon Company International Support Team</p></blockquote>
<p>I always use the same Google Account for downloads, so that&#8217;s not it and no previous purchases are listed in my Google Play Account for Magikarp jump. No pending OS updates either, so I went back to them again..</p>
<blockquote><p>This is obviously not a solution.</p>
<p>The game is downloaded from Google play, the latest version is installed.</p>
<p>No purchases are pending in Google Play.</p>
<p>My OS is the latest available.</p>
<p>I have uninstalled and tried with a new player and I could open the screen. The moment I restored my data, I couldn&#8217;t open the store screen anymore. It&#8217;s like it&#8217;s trying to check for something on your backend.</p>
<p>I&#8217;ve checked logcat and nothing relevant showed up. If needed I can provide the backup details so you can try to debug it locally.</p></blockquote>
<p>Since I&#8217;m a developer, I tried to check it out as much as I could, but even in logcat, I couldn&#8217;t see anything useful. Hell, I even tried to give them the details required to debug it on their end. But even that didn&#8217;t help&#8230;</p>
<blockquote><p>Hello Trainer,<br />
The development team stated that they do not take backup information and there are no other steps to fix this error other than what we have already provided.<br />
Thank you for playing Pokémon!<br />
Sincerely,<br />
The Pokémon Company International Support Team</p></blockquote>
<p>My only conclusion is that they don&#8217;t want my money. I also guess they don&#8217;t want other people&#8217;s money, since issues like these rarely happen for just one person. It&#8217;s just that a lot of people won&#8217;t even bother contacting support, they just give up.</p>
<p>I tried for almost a month and my issue is still not resolved. The only way to &#8220;fix&#8221; this is to start all over again, but since I&#8217;d have to start over, that&#8217;s not an option. This is something related to my savegame/profile and the ones who CAN solve this, won&#8217;t. Well done Pokémon Company, well done.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jeroenheijster.nl/support-is-sometimes-the-worst/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Windows 10 N Anniversary Update Media Feature Pack</title>
		<link>https://jeroenheijster.nl/windows-10-n-anniversary-update-media-feature-pack/</link>
					<comments>https://jeroenheijster.nl/windows-10-n-anniversary-update-media-feature-pack/#respond</comments>
		
		<dc:creator><![CDATA[mjheijster]]></dc:creator>
		<pubDate>Fri, 05 Aug 2016 20:58:33 +0000</pubDate>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[10]]></category>
		<category><![CDATA[anniversary]]></category>
		<category><![CDATA[feature]]></category>
		<category><![CDATA[Media]]></category>
		<category><![CDATA[pack]]></category>
		<category><![CDATA[Update]]></category>
		<category><![CDATA[Windows]]></category>
		<guid isPermaLink="false">https://www.jeroenheijster.nl/?p=12011</guid>

					<description><![CDATA[Over the last hour, I&#8217;ve been looking for the correct update for the Anniversary Update. Since Microsoft does not give you the option to, either let it detect which update you need or select on which version you are, I was stuck looking it up. Eventually I found it. You can download it here (KB3133719).]]></description>
										<content:encoded><![CDATA[<p>Over the last hour, I&#8217;ve been looking for the correct update for the Anniversary Update. Since Microsoft does not give you the option to, either let it detect which update you need or select on which version you are, I was stuck looking it up.</p>
<p>Eventually I found it. <a href="https://www.microsoft.com/en-us/download/details.aspx?id=53356">You can download it here (KB3133719).</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://jeroenheijster.nl/windows-10-n-anniversary-update-media-feature-pack/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>On the topic of service</title>
		<link>https://jeroenheijster.nl/service/</link>
					<comments>https://jeroenheijster.nl/service/#respond</comments>
		
		<dc:creator><![CDATA[mjheijster]]></dc:creator>
		<pubDate>Mon, 27 Jun 2016 14:38:55 +0000</pubDate>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[logitech]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[service]]></category>
		<guid isPermaLink="false">https://www.jeroenheijster.nl/?p=12001</guid>

					<description><![CDATA[I use a lot of hardware. Since I use my products a lot, things break. Usually I try to get support to see if an issue falls under warranty. What I've noticed is that some companies try to avoid replacing things that broke. ]]></description>
										<content:encoded><![CDATA[<p><strong>Hardware</strong></p>
<p>I use a lot of hardware. From my LG G3 to my Surface Pro 2 and even my ASUS ROG G750. Hell, I even have an Intel NUC as a mediaserver. My peripherals tend to vary a lot as well. I have a Roccat Tyon mouse for my laptop, a Logitech G35 headset for my laptop, an LG G Watch connected to my phone, a Microsoft All-in-One mediakeyboard for my mediaserver/mediacenter and a Microsoft Designer bluetooth-mouse for my surface. In the past I&#8217;ve used a lot of different mice. A Razer Copperhead, a Logitech G500, a Microsoft Sidewinder X8 and so much more&#8230;</p>
<p><strong>The bad</strong></p>
<p>Since I use my products a lot, things break. Usually I try to get support to see if an issue falls under warranty. What I&#8217;ve noticed is that some companies try to avoid replacing things that broke. Logitech, for example, didn&#8217;t service me, claiming that I should just return to the shop after I explained why I couldn&#8217;t. To be fair, that is within their rights.</p>
<p><strong>The way it should be</strong></p>
<p>Luckily, other companies are a lot better when it comes to service. I&#8217;ve had a HDD fail in an ASROCK ION 330 mediaserver after a year. The HDD was replaced without any issues after contacting ASROCK.</p>
<p>Still, Microsoft  seems to be king when it comes to warranty claims. My Microsoft Sidewinder X8 had a &#8220;puck&#8221; which was the wireless receiver. Since this had to be connected by USB, it involved a cable. I noticed that the cable&#8217;s plastic wrapping was ripping apart, exposing the wires inside. After registering my product and contacting Microsoft, they sent me a brand new product. I told them that my old one still worked, so I asked where I should send the old one to and they said I could keep it. I didn&#8217;t even have to show any proof. You can imagine that I was a really happy customer at that point.</p>
<p>This year, I&#8217;ve had a couple of issues with Microsoft products. At the beginning of this year, my Kinect for the Xbox One failed. It required me to unplug and re-plug the Kinect into my Xbox One to work again every day. I contacted Microsoft Support after seeing my warranty expired a week before. This wasn&#8217;t a problem and they shipped me a new one. They provided me with a shipping label to return the defective one and all was good.</p>
<p>Last week, when travelling abroad, I noticed that my Surface Pro 2 charger no longer worked. Since I didn&#8217;t have a receipt any more and officially the charger no longer have warranty (it comes with 1 year warranty and my tablet is almost 2 years old). Still, I called Microsoft Support since I couldn&#8217;t find a way to purchase a new official charger in my country. After explaining that my charger no longer functioned (and the charging light no longer goes on), they sent me a new charger free of charge under warranty! I really didn&#8217;t expect my charger to be replaced since it appears to be a cable inside seemed to have broken.</p>
<p>I really think that Microsoft gives great support on their hardware. I have recommended their hardware in the past because of it and I will continue to do so. They seem to get how they should do it and in the process create happy customers that come back for more in the future.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jeroenheijster.nl/service/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Checking for MSDeploy in Inno Setup</title>
		<link>https://jeroenheijster.nl/checking-for-msdeploy-in-inno-setup/</link>
					<comments>https://jeroenheijster.nl/checking-for-msdeploy-in-inno-setup/#respond</comments>
		
		<dc:creator><![CDATA[mjheijster]]></dc:creator>
		<pubDate>Wed, 09 Mar 2016 12:24:52 +0000</pubDate>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[inno]]></category>
		<category><![CDATA[msdeploy]]></category>
		<category><![CDATA[setup]]></category>
		<guid isPermaLink="false">https://www.jeroenheijster.nl/?p=11981</guid>

					<description><![CDATA[At my work, we use Inno Setup to deploy ASP.NET web packages. With PowerShell we set various parameters and call MSDeploy to deploy the package to IIS. A problem we faced recently was that MSDeploy was not installed on the server. We needed to check before running the wizard if MSDeploy was installed. Since the [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>At my work, we use Inno Setup to deploy ASP.NET web packages. With PowerShell we set various parameters and call MSDeploy to deploy the package to IIS. A problem we faced recently was that MSDeploy was not installed on the server. We needed to check before running the wizard if MSDeploy was installed.</p>
<p><span id="more-11981"></span></p>
<p>Since the normal deploy.cmd from Microsoft already has a detection mechanism, I used that as a basis to create the procedure in Pascal. Since I rarely use Pascal, it took a while to get the proper commands.</p>
<p>In deploy.cmd the registry is checked for the install path of MSDeploy. The cmd file takes into account that there can be multiple entries for MSDeploy. In my case I have &#8220;C:\Program Files\IIS\Microsoft Web Deploy\&#8221; and &#8220;C:\Program Files\IIS\Microsoft Web Deploy V3\&#8221;. When MSDeploy.exe is found in one or both of those folders, the deployer continues.</p>
<p>In Pascal, I wrote the following procedure to do the same:</p>
<pre class="lang:delphi decode:true ">procedure CheckMsDeploy();
var
  Names: TArrayOfString;
  I: Integer;
  installPath: String;
  ErrCode: integer;
  begin
   MSDeployInstalled := False;
  if RegGetSubkeyNames(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\IIS Extensions\MSDeploy', Names) then
  begin
    for I := 0 to GetArrayLength(Names)-1 do
		begin
			if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\IIS Extensions\MSDeploy\' + Names[I], 'InstallPath', installPath) then
			  begin
				if FileOrDirExists(installPath + 'MSDeploy.exe') = True then
				MSDeployInstalled := True;
			end
		end  
	end;
	if MSDeployInstalled &lt;&gt; True then
		if MsgBox('MSDeploy was not found on this machine. This is required for the setup. Would you like to go to knowledgebase article http://go.microsoft.com/?linkid=9278654 ?', mbConfirmation, MB_YESNO) = IDYES
		  then begin
			ShellExec('open', 'http://go.microsoft.com/?linkid=9278654',
			  '', '', SW_SHOW, ewNoWait, ErrCode);
       Abort();
    end;
end;</pre>
<p>&nbsp;</p>
<p>This procedure is called in InitializeWizard through CheckMsDeploy();. If MSDeploy is not found, it will show a message dialog with the question if you want to go to the knowledgebase article. If they click yes, the URL will open in their default browser. No matter what the user selects, the installer will exit due to the Abort(); call.</p>
<p>With this procedure, we can enforce that the user already has MSDeploy installed, which will save us with help requests.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jeroenheijster.nl/checking-for-msdeploy-in-inno-setup/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
