Search code examples
installationobfuscationdotfuscator

Dotfuscator - does obfuscate .msi file?


I've a .Net solution with .msi output. Running obfuscation (using Dotfuscate) throws following error:

PE Signature not found.  Is \Release\Output.msi a PE file?

Wondering if Dotfuscate doesn't support .msi file obfuscation.

Thanks for your help !


Solution

  • Dotfuscator does not obfuscate .msi files, only .NET assemblies (.dll and .exe files made with C#, F#, or Visual Basic .NET). If you are shipping .NET assemblies in an .msi, you will need to use Dotfuscator to protect them before they are added to your .msi.

    The easiest way to do this is to integrate Dotfuscator into your app's .exe project. Then, when you build the project in Visual Studio or MSBuild, Dotfuscator will protect the assemblies in bin\Release (both the .exe from the integrated project as well as .dlls from other projects in your solution), which your .msi can then pick up as normal. This also allows Dotfuscator to work with other packaged formats, like Xamarin, as this integration runs after the project is compiled but before it is packaged.

    (Disclaimer: I work for the Dotfuscator team and am answering as part of my job.)