【问题标题】:Visual Studio - InstallShield setup in a project with System.Data.SQLiteVisual Studio - 使用 System.Data.SQLite 在项目中设置 InstallShield
【发布时间】:2015-05-10 16:23:13
【问题描述】:

我有一个引用System.Data.SQLite (from nuget) 的C# 类库。这是构建后我的 bin 文件夹的结构:

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

System.Data.SQLite 需要SQLite.Interop 才能运行,并且在运行时会找到正确的 dll。但是,当我使用 InstallShield 生成包含项目主要输出的设置时,不会复制 x86 和 x64 文件夹,并且我的应用程序无法运行。

有什么方法可以强制 Visual Studio 在主输出中包含 x86 和 x64 文件夹?

有什么方法可以在 InstallShield 中手动将文件夹包含在 relative 路径中?

我的环境:

  • Visual Studio 2012 专业版
  • 安装 Shield 2013 限量版(免费)
  • System.Data.SQLite 1.0.96

【问题讨论】:

  • 这些听起来像是依赖而不是主要输出,但请记住输出组是为了方便而不是控制。如果您想完全控制您的设置,最好静态选择文件。
  • 不幸的是,x64 和 x86 文件夹是由 Nuget 包管理的,所以我发现的唯一方法是使用绝对路径。它可以工作,但每个开发人员都必须在自己的计算机上进行配置。如果我可以使用相对路径会很棒,但我没有找到免费版的方法。
  • @Rafael 让您知道。您可以手动将 setup.isl 文件从 c:\yourpath\packages\System.Data.SQLite.Core.1.0.94.0\build\net40\x86\SQLite.Interop.dll 更改为 <ISProjectFolder>..\packages\System.Data.SQLite.Core.1.0.94.0\build\net40\x86\SQLite.Interop.dll(或者您的 SQLite.Interop 所在的位置)
  • 我希望你已经尝试了设置(解决方案资源管理器 -> 右键单击​​项目 -> 属性 -> 构建)目标平台为 64 位或 32 位,而不是任何 CPU 强制 x86 或 x64。
  • 还要检查输出路径。更多详情请参考stackoverflow.com/questions/24940659/…

标签: visual-studio-2012 dll installshield system.data.sqlite installshield-le


【解决方案1】:

是的,有一种方法可以通过 InstallShield 添加/部署文件夹。在文件选项卡下,您可以添加文件/文件夹。添加这些文件时,您也可以在其中设置相对路径。只需使用路径设置一个属性并在您的相对路径中使用该属性。因此,想要将这些文件复制到哪里(DLL 的参考位置),您可以通过 InstallShield 添加该文件夹结构,然后您可以在其中添加文件。

【讨论】:

    【解决方案2】:

    我刚刚使用 VS2013 / Installshield LE 遇到了同样的问题;我最终选择将我机器上的 NuGet 包更改为不在 build 文件夹下为 SQLite.interop.dll 创建 x86 文件夹。

    为此,请查看项目目录下的“packages\System.Data.SQLite.Core.1.0.104.0\build”文件夹。然后选择与您所针对的 .NET 版本相关的子文件夹,并在文本编辑器中打开“System.Data.SQLite.Core.targets”文件。您需要删除对“%(RecursiveDir)”的所有引用,“SQLite Interop Library Content Items”部分除外。保存、清理和重建 - interop dll 现在应该与主可执行文件/etc 位于同一文件夹中,并且 Installshield 应该能够自动将其作为依赖项包含在内。

    如果它没有出现在正确的位置,请尝试编辑其他 .NET 版本的 .target 文件,直到找到正确的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      相关资源
      最近更新 更多