<?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>Gabby Martinez, Author at DMC, Inc.</title>
	<atom:link href="https://static.dmcinfo.com/blog/author/gabbym/feed/index.xml" rel="self" type="application/rss+xml" />
	<link></link>
	<description></description>
	<lastBuildDate>Fri, 04 Sep 2026 18:22:22 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://static.dmcinfo.com/wp-content/uploads/2025/04/site-icon-150x150.png</url>
	<title>Gabby Martinez, Author at DMC, Inc.</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Intro to CI/CD Pipelines</title>
		<link>https://static.dmcinfo.com/blog/16667/intro-to-ci-cd-pipelines/</link>
		
		<dc:creator><![CDATA[Gabby Martinez]]></dc:creator>
		<pubDate>Sat, 03 Feb 2024 16:24:25 +0000</pubDate>
				<category><![CDATA[Application Development]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/16667/intro-to-ci-cd-pipelines/</guid>

					<description><![CDATA[<p>GitLab defines Continuous Integration (CI)/Continuous Deployment (CD)&#160;as “an essential part of DevOps and any modern software development practice.”&#160;I prefer to describe it as one of the coolest and niftiest parts of application development. CI/CD pipelines allow you to automate processes that ensure the quality of your code and deployments. You can perform static code analysis [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/16667/intro-to-ci-cd-pipelines/">Intro to CI/CD Pipelines</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><a href="https://about.gitlab.com/topics/ci-cd/" target="_blank">GitLab defines Continuous Integration (CI)/Continuous Deployment (CD)</a>&nbsp;as “an essential part of DevOps and any modern software development practice.”&nbsp;I prefer to describe it as one of the coolest and niftiest parts of application development. CI/CD pipelines allow you to automate processes that ensure the quality of your code and deployments.</p>



<p class="wp-block-paragraph">You can perform static code analysis to verify your code doesn’t include major vulnerabilities. You can run a linter if you’re nitpicky like I am and want to ensure new changes are formatted correctly. You can run unit tests to be sure the new code you wrote did not introduce regressions. You can deploy your web app to the cloud. You can create an installer for your desktop app. I could go on but will instead just repeat: <em>the coolest and niftiest parts of app dev</em>.</p>



<p class="wp-block-paragraph">I should briefly note that the full definition of CI/CD (<a href="https://en.wikipedia.org/wiki/CI/CD" target="_blank">like Wikipedia notes here</a>)&nbsp;defines that it can&nbsp;be considered&nbsp;more of an execution style:&nbsp;where&nbsp;CI is the frequent merging of several small changes into a main branch, and CD is the production of software in short, efficient cycles so that it can be <em>continuously delivered</em>.</p>



<p class="wp-block-paragraph">While frequent integration of code into the main branch&nbsp;and the delivery of new features are very important, any references to CI/CD in the remainder of this blog will refer to the concepts of automated code validation and automated code deployment (via CI/CD pipelines).</p>



<h2 id="h-into-the-nitty-gritty" class="wp-block-heading"><strong>Into the Nitty Gritty</strong></h2>



<p class="wp-block-paragraph">Here’s some clarifying information before I rave further about CI/CD pipelines:</p>



<p class="wp-block-paragraph"><strong>Continuous Integration (CI)</strong> —&nbsp;focused on building and testing code as it is committed to the remote repository.</p>



<p class="wp-block-paragraph"><strong>Continuous Deployment (CD)</strong> —&nbsp;focused on deploying and releasing software.</p>



<h2 id="h-why-should-you-care" class="wp-block-heading"><strong>Why Should You Care?</strong></h2>



<p class="wp-block-paragraph">CI/CD pipelines are super nifty but do require time to set up. Someone needs to write the code that can run automatically, right? If you’re on a project with a tight timeline, it can be tough to justify devoting extra time to configuring your web app so it can deploy automatically (especially when you could just deploy it using the Azure CLI yourself).</p>



<p class="wp-block-paragraph">But what happens when you have multiple developers working on the project who also need to deploy their changes to the web app? What if you get pulled to another project and can’t manually deploy? What if you forget to run the unit tests before deploying&nbsp;and you deploy broken code to your site?</p>



<p class="wp-block-paragraph">Writing a CI/CD pipeline is an investment into the long-term health and maintainability of your code base. <em>Continuous integration</em> can verify that new code is up to par (via static analysis, automated unit test execution, code coverage, and linting). If a developer commits code that can’t build or doesn’t pass unit tests, your pipeline will flag that there’s an issue.</p>



<p class="wp-block-paragraph"><em>Continuous deployment</em> reduces the overhead of deploying your code base. It ensures that each deployment step is executed when new code is deployed (none are forgotten through human error) and that a single person doesn’t have the overhead of manually deploying the app each time code needs to be pushed.</p>



<h2 id="h-environments" class="wp-block-heading"><strong>Environments</strong></h2>



<p class="wp-block-paragraph">Setting up a CI/CD pipeline can also make it much easier to support multiple environments for your application. In the past, I’ve set up ‘development’, ‘staging’, and ‘production’ branches in addition to ‘main’. I’ve then configured my pipeline to deploy to the appropriate environment when code is merged into its matching branch.</p>



<p class="wp-block-paragraph">This makes it easy to determine which code is live for each branch&nbsp;or to generate diffs between environments. It also means that you can push code after performing a pull request to the appropriate environment:&nbsp;giving you the opportunity to review the code before it goes live.</p>



<p class="wp-block-paragraph">An important note regarding production: be sure to configure appropriate permissions or gates for triggering your pipeline to production. Those gates could be rules on the pull requests that merge to a production branch or restricting permissions of the users who can trigger a branch that deploys to production.</p>



<p class="wp-block-paragraph">A fun note: you can also use <a href="https://learn.microsoft.com/en-us/devops/deliver/what-is-infrastructure-as-code" target="_blank">IaC</a> to deploy the resources that host your application based on each environment, but that’s a topic for another time.</p>



<h2 id="h-how-to-configure-ci-cd" class="wp-block-heading"><strong>How to Configure CI/CD</strong></h2>



<p class="wp-block-paragraph">Most source code repositories (i.e. <a href="https://docs.gitlab.com/ee/ci/" target="_blank">GitLab</a>, <a href="https://learn.microsoft.com/en-us/azure/devops/pipelines/create-first-pipeline?view=azure-devops&amp;tabs=java%2Ctfs-2018-2%2Cbrowser" target="_blank">Azure DevOps</a>, <a href="https://docs.github.com/en/actions/quickstart" target="_blank">GitHub</a>, <a href="https://support.atlassian.com/bitbucket-cloud/docs/get-started-with-bitbucket-pipelines/" target="_blank">Bitbucket</a>) offer their own flavor of the yaml file required to configure a CI/CD pipeline. Their documentation will be the most helpful resource on the specific syntax required to make their yaml files run.</p>



<h2 id="h-overview" class="wp-block-heading"><b>Overview</b></h2>



<p class="wp-block-paragraph">Writing a CI/CD pipeline is most likely worth your time if:</p>



<ul class="wp-block-list">
<li>You have multiple developers working on your code base.</li>



<li>You want to automatically test code quality whenever a developer pushes to the remote.</li>



<li>You want increased repeatability and reliability of your deployment processes.</li>



<li>You want to reduce developer overhead when new code needs to be deployed.</li>



<li>You want to support multiple environments.</li>
</ul>



<p class="wp-block-paragraph">(It’s also just super cool and nifty).</p>



<div class="wp-block-group alignwide has-custom-light-blue-background-color has-background is-layout-flow wp-container-core-group-is-layout-dbd34961 wp-block-group-is-layout-flow" style="border-radius:20px;margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50);padding-top:var(--wp--preset--spacing--50);padding-right:0;padding-bottom:var(--wp--preset--spacing--50);padding-left:0">
<div class="wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-43efaee5 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:85%">
<h3 class="wp-block-heading has-text-align-left" id="h-have-an-upcoming-project-dmc-can-help-you-take-the-next-step"><strong>Build, Test, and Deploy with CI/CD Automation</strong>.</h3>



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">Explore our <a href="https://static.dmcinfo.com/services/application-development/" data-type="page" data-id="434">Application Development</a> expertise in creating reliable CI/CD pipelines across development, staging, and production environments.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/16667/intro-to-ci-cd-pipelines/">Intro to CI/CD Pipelines</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to Generate an MSI using WixSharp</title>
		<link>https://static.dmcinfo.com/blog/18260/how-to-generate-an-msi-using-wixsharp/</link>
		
		<dc:creator><![CDATA[Gabby Martinez]]></dc:creator>
		<pubDate>Fri, 07 Oct 2022 09:40:49 +0000</pubDate>
				<category><![CDATA[Application Development]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/18260/how-to-generate-an-msi-using-wixsharp-2/</guid>

					<description><![CDATA[<p>You’ve just finished creating an amazing WPF desktop application. You want to send a friend an MSI so they can install it on their host, but you&#8217;ve never generated an MSI. Fret not! This blog will walk you through generating an installer to install .exes onto a system using a Windows 64 bit processer. We [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/18260/how-to-generate-an-msi-using-wixsharp/">How to Generate an MSI using WixSharp</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">You’ve just finished creating an amazing WPF desktop application. You want to send a friend an MSI so they can install it on their host, but you&#8217;ve never generated an MSI.</p>



<p class="wp-block-paragraph">Fret not! This blog will walk you through generating an installer to install .exes onto a system using a Windows 64 bit processer. We will be using <a href="https://github.com/oleg-shilo/wixsharp">WixSharp</a>, written by Oleg Shilo, to generate our installer.</p>



<p class="wp-block-paragraph">A few notes before we start:</p>



<ul class="wp-block-list">
<li>The app I am creating an installer for uses .NET Core 3.1
 
 
<ul class="wp-block-list" style="list-style-type:circle;">
  

<li>WixSharp requires .NET Framework to run, therefore, you will not be able to reference a .NET Core application directly from your WixSharp project.</li>


 </ul>
</li>



<li>This demo was created using WixSharp version 1.19.0, WixToolset version 3.11.2, and WixSharp Project Templates version 1.15.0.</li>



<li>If you’ve already published your app, you can skip to the section <a href="#Installing WiX Dependencies">Installing Wix Dependencies</a></li>
</ul>



<h2 id="h-publishing-your-app-as-a-single-exe" class="wp-block-heading">Publishing Your App as A Single .exe</h2>



<p class="wp-block-paragraph">You can package your entire app as a single .exe. To do so, access your publishing settings by right clicking on the project you want to publish and selecting “Publish” from the drop-down menu.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/wixsharp-profile-settings-1.png" alt="Profile settings window"/></figure>



<p class="wp-block-paragraph">You can use the settings shown above to generate a single .exe intended to run on windows&#8217; 64 operating systems. Save your settings, and then click the “Publish” button in the upper right-hand corner of the Publish window.</p>



<p class="wp-block-paragraph">This will generate a .exe and a .pdb file within the bin folder of your application&nbsp;at the path Release&gt;{.NET version}&gt;publish. You will only need the .exe to run your application; you can test this by copying and pasting the .exe to your desktop and running the .exe to launch your application.</p>



<p class="wp-block-paragraph">&nbsp;</p>



<h2 id="h-installing-wix-dependencies" class="wp-block-heading"><a id="Installing WiX Dependencies" name="Installing WiX Dependencies"></a>Installing WiX Dependencies</h2>



<p class="wp-block-paragraph"><a>Start by installing the </a><a href="https://wixtoolset.org/releases/" target="_blank">latest stable version of the WiXToolset</a>. Within the git repository, you can download the .exe listed within the project assets.</p>



<p class="wp-block-paragraph">Next, install the <a href="https://marketplace.visualstudio.com/items?itemName=OlegShilo.WixSharpProjectTemplates" target="_blank">WixSharp Project Templates</a>. These will install within your instance of Visual Studio and allow you to generate template WixSharp projects, which helps to streamline development.</p>



<p class="wp-block-paragraph">Add a new project to your solution,&nbsp;of template type WixSharpSetup. The other project templates provide other features, but, for the purposes of this example, we will use the basic setup project.</p>



<p class="wp-block-paragraph">Once you&#8217;ve generated your project, install the WixSharp NuGet dependencies. To do so, right click on your new WiX project and select Manage NuGet Packages from the dropdown menu.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/NuGet-wix-sharp-installer-1.png" alt="NuGet: WixSharpInstaller Windown"/></figure>



<p class="wp-block-paragraph">Installing the WixSharp package will automatically include the WixSharp binaries; you do not need to install them separately.</p>



<p class="wp-block-paragraph">Once you&#8217;ve installed your dependencies, you can open the Program.cs file within your project. Remove the comments reminding you to install WixSharp.</p>



<p class="wp-block-paragraph">Additionally, you can replace the Program class with the one shown below, which will display a custom UI for your user while installing your app (shown at the bottom of this blog) and installs the .exe within the system&#8217;s program files, as well as within the start menu and on the user&#8217;s desktop.</p>



<p class="wp-block-paragraph">You will need to add two using statements to run the below code: using System.Linq and using WixSharp.Controls. Feel free to remove the comments as needed.</p>


<table border="1" cellpadding="0" cellspacing="0" summary="" title="">
<tbody>
<tr>
<td style="width:66px;">&nbsp;</td>
<td style="width:668px;">


<p class="wp-block-paragraph">class Program</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp; {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private static void Main()</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Name of your application if you search for it within your programs (if you need to uninstall).</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var productName = &#8220;Arbitrary Application&#8221;;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Path to the directory where an exe will be generated.</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var directoryPath = &#8220;%ProgramFiles%\\ArbitraryApplication\\&#8221;;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Path to the .exe you want to have your MSI install. It is located relative to your WixSharpInstaller project.</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var fileString = &#8220;..\\ArbitraryApplication\\bin\\Release\\netcoreapp3.1\\publish\\ArbitraryApplication.exe&#8221;;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Generates a new project with an identifying GUID, an installer UI, and a specified platform.</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var project = new Project(productName, new Dir(</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; directoryPath, new File(fileString)))</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ProductId = Guid.NewGuid(),</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UpgradeCode = new Guid(&#8220;8978A875-366E-42B1-81E6-9A7FF2E58BD0&#8221;),</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Platform = Platform.x64,</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UI = WUI.WixUI_InstallDir,</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };</p>



<p class="wp-block-paragraph">&nbsp;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Defines the custom installation UI.</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; project.CustomUI = new DialogSequence()</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .On(NativeDialogs.WelcomeDlg, Buttons.Next, new ShowDialog(NativeDialogs.VerifyReadyDlg))</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .On(NativeDialogs.VerifyReadyDlg, Buttons.Back, new ShowDialog(NativeDialogs.WelcomeDlg));</p>



<p class="wp-block-paragraph">&nbsp;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Defines logic to implement upgrades</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; project.MajorUpgrade = new MajorUpgrade()</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Schedule = UpgradeSchedule.afterInstallInitialize,</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AllowDowngrades = true,</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };</p>



<p class="wp-block-paragraph">&nbsp;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Generates the file shortcuts to your .exe using LINQ.</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; project.ResolveWildCards()</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .FindFile(f =&gt; f.Name.EndsWith(&#8220;ArbitraryApplication.exe&#8221;))</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .First()</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Shortcuts = new[] {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new FileShortcut(productName, &#8220;%Desktop%&#8221;),</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new FileShortcut(productName, &#8220;%ProgramMenu%&#8221;)</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; };</p>



<p class="wp-block-paragraph">&nbsp;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Builds your MSI.</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Compiler.BuildMsi(project);</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp; }</p>


</td>
</tr>
</tbody>
</table>


<p class="wp-block-paragraph">If upon building your project, you generate errors that look like the ones below, you will need to update your framework to match that required by WixSharp.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/wixsharp-error-list-1.png" alt="wixsharp error list"/></figure>



<p class="wp-block-paragraph">To do so, right click on your WiX project and select Properties. Here, you can update the framework to match the one noted in your error messages (in the case of the screenshots, .NET Framework 4.5.1.).</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/wixsharp-installer-application-settings-1.png" alt="wixsharp installer application settings"/></figure>



<p class="wp-block-paragraph">Once you&#8217;ve updated your target framework, you should be able to successfully build your app! The MSI will take a moment to generate; you will know your process is complete when a console window loads and then closes itself. At this point, you should be able to open your WiX project within your file explorer to find your brand new MSI!</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="900" height="330" src="https://static.dmcinfo.com/wp-content/uploads/2022/10/image-25.png" alt="" class="wp-image-35625" srcset="https://static.dmcinfo.com/wp-content/uploads/2022/10/image-25.png 900w, https://static.dmcinfo.com/wp-content/uploads/2022/10/image-25-300x110.png 300w, https://static.dmcinfo.com/wp-content/uploads/2022/10/image-25-768x282.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p class="wp-block-paragraph">Another common error you may run into can occur if you do not install the WiX Toolset linked at the top of this article. <strong>There is a WiXToolset NuGet package that is</strong> <strong>not the same as the WiX Toolset you need for this workflow</strong><em>. </em>If your toolset is not installed, you may see a &#8216;WiX binaries cannot be found. Wix# is capable of automatically finding WiX tools only if WiX Toolset Installed.&#8217;</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/wixsharp-output-error-1.png" alt="wixsharp output error"/></figure>



<p class="wp-block-paragraph">To fix this issue, install the <a href="https://wixtoolset.org/releases/" type="link" id="https://wixtoolset.org/releases/">WiX Toolset</a>.</p>



<p class="wp-block-paragraph">Now that you know the basics for generating an MSI file, you can customize your installer using the WixSharp library. You can create a custom UI workflow, update where your application automatically installs to, and much more. For examples of how to implement these functions, see the <a href="https://github.com/oleg-shilo/wixsharp/tree/master/Source/src/WixSharp.Samples/Wix%23%20Samples" target="_blank">WixSharp git repository</a>.</p>



<h2 id="h-running-your-installer" class="wp-block-heading"><strong>Running Your Installer</strong></h2>



<p class="wp-block-paragraph">You can now run your installer and install your application!</p>



<p class="wp-block-paragraph"><strong>Learn more about DMC&#8217;s <a href="https://static.dmcinfo.com/services/application-development#software-development">Application Development</a> expertise, and contact us&nbsp;to get started on your next project.</strong></p>
<p>The post <a href="https://static.dmcinfo.com/blog/18260/how-to-generate-an-msi-using-wixsharp/">How to Generate an MSI using WixSharp</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>DMC Houston Office Update: Welcome to Our Crib</title>
		<link>https://static.dmcinfo.com/blog/20913/dmc-houston-office-update-welcome-to-our-crib/</link>
		
		<dc:creator><![CDATA[Gabby Martinez]]></dc:creator>
		<pubDate>Tue, 24 Sep 2019 11:19:27 +0000</pubDate>
				<category><![CDATA[Activities]]></category>
		<category><![CDATA[Culture]]></category>
		<category><![CDATA[Houston]]></category>
		<category><![CDATA[Locations]]></category>
		<category><![CDATA[Update Video]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/20913/dmc-houston-office-update-welcome-to-our-crib/</guid>

					<description><![CDATA[<p>Once a month, on a Friday morning at 9 A.M. Eastern, 8 A.M. Central, 7 A.M. Mountain Daylight, and 6 A.M. Pacific (sorry Seattle) DMC offices across the country tune in to the monthly company meeting. This meeting includes introductions to employees, an award ceremony, a celebration of anniversaries, an address from our fearless leader, [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/20913/dmc-houston-office-update-welcome-to-our-crib/">DMC Houston Office Update: Welcome to Our Crib</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Once a month, on a Friday morning at 9 A.M. Eastern, 8 A.M. Central, 7 A.M. Mountain Daylight, and 6 A.M. Pacific (sorry <a href="https://static.dmcinfo.com/contact/seattle/">Seattle</a>) DMC offices across the country tune in to the monthly company meeting. This meeting includes introductions to employees, an award ceremony, a celebration of anniversaries, an address from our <a href="/about/employee-bios/frank-riordan">fearless leader</a>, and much more.</p>



<p class="wp-block-paragraph">Each month, a different office gives an update at the end of the meeting. During the month of September, the <a href="https://static.dmcinfo.com/contact/houston/">Houston </a>office was tasked with updating the world of DMC about the goings-on in the 713.</p>



<p class="wp-block-paragraph">DMC Houston has been busy since our last update. We worked on a ton of different projects, floated on boats, lost <a href="/about/employee-bios/john-williams">John Williams</a> to the new <a href="https://static.dmcinfo.com/contact/dallas/">Dallas</a> office, welcomed new hires, and moved into a shiny, new office. We chose to show off our new space with a spoof of the sorely missed MTV show, Cribs. Some of the perks of our new office include a pristine new kitchen, a new lab, and most importantly, lots of <a href="https://www.topochicousa.net/">Topo Chico</a>.</p>



<p class="wp-block-paragraph">I could go on for pages about our new office, but I’ll let our update video (and our gracious host, Kevin) do the rest of the talking.</p>



<p class="wp-block-paragraph">Check out our update video below or on <a href="https://www.youtube.com/user/DMCEngineering/featured?view_as=subscriber" target="_blank">YouTube</a> with the rest of our office update videos.&nbsp;</p>



<p class="wp-block-paragraph"><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/fKy6FRU0VT8" width="560"></iframe></p>



<p class="wp-block-paragraph">Learn more about <a href="/about">DMC&#8217;s Company Culture.</a></p>
<p>The post <a href="https://static.dmcinfo.com/blog/20913/dmc-houston-office-update-welcome-to-our-crib/">DMC Houston Office Update: Welcome to Our Crib</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Houston Welcomes New Employees with a Bob Ross-inspired Painting Party</title>
		<link>https://static.dmcinfo.com/blog/21012/houston-welcomes-new-employees-with-a-bob-ross-inspired-painting-party/</link>
		
		<dc:creator><![CDATA[Gabby Martinez]]></dc:creator>
		<pubDate>Tue, 10 Sep 2019 12:31:34 +0000</pubDate>
				<category><![CDATA[Activities]]></category>
		<category><![CDATA[Culture]]></category>
		<category><![CDATA[Houston]]></category>
		<category><![CDATA[Locations]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/21012/houston-welcomes-new-employees-with-a-bob-ross-inspired-painting-party/</guid>

					<description><![CDATA[<p>DMC has a lot of ways to make new employees feel welcome. One of the coolest is by hosting welcome parties. Each new employee is able to bond with their new colleagues at a social event of their choosing.&#160; Painting Party New hires all start by training in Chicago before moving to their respective office [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/21012/houston-welcomes-new-employees-with-a-bob-ross-inspired-painting-party/">Houston Welcomes New Employees with a Bob Ross-inspired Painting Party</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">DMC has a lot of ways to make new employees feel welcome. One of the coolest is by hosting welcome parties. Each new employee is able to bond with their new colleagues at a social event of their choosing.&nbsp;</p>

<h4 class="wp-block-heading">Painting Party</h4>

<p class="wp-block-paragraph">New hires all start by training in Chicago before moving to their respective <a href="https://static.dmcinfo.com/contact">office locations</a>. I had a great time <a href="https://static.dmcinfo.com/latest-thinking/blog/id/9931/a-wndrous-welcome-party">being welcomed by the Chicago crew</a> along with other new employees at an interactive art exhibit called the WNDR Museum.</p>

<p class="wp-block-paragraph">Once I arrived in Houston, the team here took the opportunity to welcome Cody Cook and me.&nbsp;For our welcome party, we hosted a&nbsp;Bob Ross painting night!</p>

<figure class="wp-block-image"><img decoding="async" alt="A painting party at DMC Houston" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/houston-painting-welcome-02.jpg"  /></figure>

<p class="wp-block-paragraph">We painted along to Bob Ross&rsquo;s <a href="https://www.youtube.com/watch?v=EVfPPJ5FUmA" target="_blank">&quot;Southwest Serenity&quot;&nbsp;video</a> and ordered Thai food. We also got a good spread of snacks and drinks. Several&nbsp;of us opted to take&nbsp;our&nbsp;first shot of Malort (a Chicago-based spirit), which was definitely an experience.</p>

<figure class="wp-block-image"><img decoding="async" alt="Painting party in DMC Houston" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/houston-painting-welcome-01.jpg"  /></figure>

<h4 class="wp-block-heading">Artsy Engineers</h4>

<p class="wp-block-paragraph">Once we finished painting. we were&nbsp;able to send all of our extra supplies (easels, canvases, acrylic paint, brushes, and paint container pallet things) home with Maddie&rsquo;s roommate, who&rsquo;s an art teacher.</p>

<figure class="wp-block-image"><img decoding="async" alt="DMC Houston painting welcome party" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/houston-painting-welcome-04.jpg"  /></figure>

<p class="wp-block-paragraph">My favorite part of the whole welcome party was getting to see everyone&rsquo;s artwork at the end (especially Leigh&rsquo;s). All the paintings actually turned out really well!</p>

<figure class="wp-block-image"><img decoding="async" alt="DMC Houston engineers painting " src="https://static.dmcinfo.com/wp-content/uploads/2025/05/houston-painting-welcome-03.jpg"  /></figure>

<p class="wp-block-paragraph">The painting party was a fun way for our engineers to show off a different set of skills. It was great to spend time getting to know my new colleagues. Bob Ross has some competition from a few of DMC&apos;s engineers!</p>

<figure class="wp-block-image"><img decoding="async" alt="Engineers toast at DMC Houston" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/houston-painting-welcome-05.jpg"  /></figure>

<p class="wp-block-paragraph"><strong>Learn more about&nbsp;<a href="https://static.dmcinfo.com/about">DMC&apos;s company culture</a>&nbsp;and&nbsp;<a href="https://static.dmcinfo.com/contact">check out our open positions</a>&nbsp;to join our team.</strong></p>
<p>The post <a href="https://static.dmcinfo.com/blog/21012/houston-welcomes-new-employees-with-a-bob-ross-inspired-painting-party/">Houston Welcomes New Employees with a Bob Ross-inspired Painting Party</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
