A simple trick to mimic ends-with, this would be used during transformations when ignoring Components and ComponentRefs generated by the heat.exe tool.

I used a pipe because it was more readable for me, but you should be able to use any character you want.

<!-- The below will match any files ending with .Service.exe and not .Service.exe.config -->
<xsl:key name="K.ServiceExeSearch" match="wix:Component[contains(concat(wix:File/@Source, '|'), '.Service.exe|')]" use="@Id" />