Visual Studio - Install InstallShield in a project with System.Data.SQLite

I have a C # class library that references System.Data.SQLite (from nuget) . This is the structure of my bin folder after build:

  • Myproject.dll
  • System.Data.SQLite.dll
  • x86 / SQLite.Interop.dll
  • x64 / SQLite.Interop.dll

System.Data.SQLite is required to execute SQLite.Interop , and the correct DLL will be found at runtime. However, when I create an installation with InstallShield that includes the main output of the project, the x86 and x64 folders are not copied, and my application does not start.

Is there a way to get Visual Studio to include the x86 and x64 folders in the main output?

Is there a way to include folders manually in InstallShield with a relative outline?

My environment:

  • Visual Studio 2012 Professional
  • Install Shield 2013 Limited Edition (free)
  • System.Data.SQLite 1.0.96
+7
dll visual-studio-2012 system.data.sqlite installshield installshield-le
source share
2 answers

Yes, there is a way to add / expand folders through InstallShield. On the Files tabs you can add files / folder. When adding these files, you can also set the relative path. Just set the property using the path and use this property in your relative path. Therefore, where you want to copy these files (links for DLLs), you can add this folder structure through InstallShield, and you can add files to it.

0
source share

I just ran into the same problem using VS2013 / Installshield LE; In the end, I decided to change the NuGet package on my machine so as NOT to create the x86 folder for SQLite.interop.dll in the build folder.

To do this, look in the folder "packages \ System.Data.SQLite.Core.1.0.104.0 \ build" in the project directory. Then select the subfolder related to the .NET version that you are targeting and open the file "System.Data.SQLite.Core.targets" in a text editor. You will want to remove all references to the " %(RecursiveDir) " EXCEPT in the " SQLite Interop Library Content Items " section. Save, clean and rebuild - dll interop should now be in the same folder as the main executable / etc, and Installshield should be able to automatically include it as a dependency.

If it does not appear in the right place, try editing the .target file of a different version of .NET until you click the right one.

0
source share

All Articles