【问题标题】:Program causing errors after MSI installation安装 MSI 后导致错误的程序
【发布时间】:2014-07-27 15:38:03
【问题描述】:

我为我的 C# VS2008 程序创建了一个 msi 安装程序。该程序从位于安装文件夹中的 xml 文件中读取数据,并复制可以在同一文件夹中找到的 excel 文件。

当我在调试模式或发布模式下运行它时,它工作正常。但是,使用 MSI 安装程序后,我使用真正的可执行文件,我收到以下错误:

错误:对路径 C:\ 的访问被拒绝。 (现已解决)

错误:未找到匹配的配置文件。请联系您的服务提供商。 (现在已经解决了。)

错误:给定的键不在字典中。 (这发生过 在另一台机器上,一台笔记本电脑上,当试图从 csv 转换为 优秀。)

关于安装 MSI 后可能导致此问题的任何想法?

编辑:前两个错误已解决,但第三个错误仍然存​​在。

【问题讨论】:

  • 您的代码正在使用一个字典类,可能与 xml 文件有关,并且在您读入它之后,您正在引用一个不存在的键。我猜是因为您没有说明您的程序对 xml 文件的实际操作。通过使您的代码更智能并在使用之前测试密钥是否存在,这应该很容易调试。您可能加载了错误的 Xml 文件。您要求我们弄清楚为什么您的代码无法在未显示代码或实际安装文件夹中的 Xml 的情况下与 Xml 文件一起使用!
  • 是的,我已经找到了。出于某种原因,在一台计算机上,它接受 Workbooks.Worksheets[1] 作为我正在向其传输信息的 Excel 工作表的选择,但在另一台计算机上,它认为它超出了范围。我通过输入工作表的名称来修复它。

标签: c# excel csv windows-installer converter


【解决方案1】:

出于好奇:您在构建机器上使用的是哪个 .NET 框架,笔记本电脑上安装了哪个 .NET 框架?您还需要安装 Windows 安装程序。版本很重要,因此请检查您的构建机器和笔记本电脑上是否安装了相同的 Windows Installer 版本。

【讨论】:

  • 在我的机器上,我在 VS2008 .Net 3.5 中编码,笔记本电脑至少有 4.5 的 .Net。
  • windows 安装程序呢? x64 都是 32 位的吗?
  • 我不确定。我需要弄清楚如何检查。
  • 你可以去添加删除程序或者添加删除windows功能,然后查看版本。其他选项是转到程序文件文件夹并在那里查看。
【解决方案2】:

由于它在开发人员机器上运行良好,它很可能是程序所需的缺失组件。可能是组件(DLL 等)未在目标计算机上注册。确保安装程序安装并注册程序所需的所有组件。

/在第一条评论后更新/

此外,您还可以找到解决方案属性中使用的引用。见下图,

这将告诉正在使用的引用是什么。此外,Copy Local 列中显示 True 的任何内容都需要与目标计算机上的程序位于同一文件夹中,并且必须进行注册。 False 表示它们在 .NET 框架本身中,无需复制到目标计算机,因为它将在 .NET 框架本身中。

另外,您可以使用以下命令注册组件,

在 32 位计算机上:

"regsvr32.exe" "组件文件路径和名称"

在 64 位计算机上:

"C:\Windows\SysWOW64\regsvr32.exe" "组件文件路径和名称"

您可以通过 VBScript (*.vbs) 文件运行它。

【讨论】:

  • 我如何知道需要哪些东西?我已经包含了 DLL 和所有必要的文件。我想这可能是我缺少的注册部分。
猜你喜欢
  • 2011-11-17
  • 1970-01-01
  • 1970-01-01
  • 2011-01-03
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多