Search code examples
c#xamlwixawesomiumpdfviewer

Xaml Control Not Working After WIX Install


I have two controls in my XAML app. One is Awesomium and the other is the PDF Viewer AxAcroPDFLib.AxAcroPDF When I run the app locally from Visual Studio, when Awesomium encounters a pdf link it reroutes the request to the pdf viewer and everything is honky dory.

The problem is that once I try to create the standalone product via the WIX installer deal, the rerouted request seems to be handled by my locally installed Acrobat Reader instead of the AxAcroPDFLib one (the PDF viewer runs outside of my XAML app.)

I thought it might have something to do with the two dlls (Interop.AcroPDFLib.dll and AxInterop.AcroPDFLib.dll) for the reader not being registered so I used heat.exe to create the appropriate dll registrations, but that didn't change anything at all (no error thrown durring installation and the PDF viewer still ran outside my app.) I even tried using the "forbidden" SelfRegCost = "1" on the two files and that failed to install, saying that it could not register the DLL. At this point I am a bit lost as to what I should do. Any assistance is greatly appreciated.

Update: I tried publishing the app using VS, skipping all of the WIX stuff and the app works as intended. I am now certain that it has something to do with my WIX xml...


Solution

  • In the end the problem was that I was not copying all of the necessary files to make it work...I think I went excessive on a few of these, but here is the file list that I needed to have for it to finally work (I stopped trying to register any of the DLLs using heat or otherwise):

    AcroPDF.dll
    avcodec-53.dll
    avformat-53.dll
    avutil-51.dll
    Awesomium.Core.dll
    Awesomium.Core.xml
    Awesomium.dll
    Awesomium.Windows.Controls.dll
    Awesomium.Windows.Controls.xml
    Awesomium.Windows.Forms.dll
    Awesomium.Windows.Forms.xml
    awesomium_process
    AxInterop.AcroPDFLib.dll
    MyApp.exe
    MyApp.exe.config
    MyApp.exe.manifest
    icudt.dll
    Interop.AcroPDFLib.dll
    libEGL.dll
    libEGLv2.dll
    xinput9_1_0.dll
    

    I also had en-US.dll in a separate locales folder