繁体   English   中英

为64位系统创建安装程序时出现问题

[英]Problem in creating installer for 64 bit system

我正在研究ac#+ vsto项目。我们使用vsto创建和验证excel模板。 我最近发现了一件有趣的事情。

在32位系统上,安装了软件

C:\\ Program Files

但在64位系统上,它安装在

C:\\ Program Files(x86)

当我尝试

案例I:在64位系统上打开excel文件(在32位系统上创建)。

案例二:在32位系统上打开excel文件(在64位系统上创建)

我在系统上遇到异常。

这是因为各个DLL存储在不同的位置。

因为32位指的是

C:\\ Program Files

和64位指的是

C:\\ Program Files(x86)

有什么办法可以强制安装程序在64位系统的C:\\ Program Files中安装软件,而不是在C:\\ Program Files(x86)中安装它

有帮助吗?

问候。

惯例是在64位系统上将32位软件安装到Program Files (x86) 我不认为你想要将32位软件安装到Program Files - 这将违背细节。

至于修复是什么,我想知道为什么Excel认为你的DLL安装在Program Files 您是否有可能在某处使用硬编码路径?


从您的评论到这个答案,确实看起来您正在对安装路径进行硬编码。 这听起来好像在很多方面都是个问题。 您已经发现了64位操作系统问题,但是如果您的用户的系统驱动器是D怎么办? 如果他们有Windows的本地化版本怎么办? 例如,在德国,程序文件文件夹通常是C:\\Programme

从我可以收集的关于如何部署VSTO加载项的内容中,您只需编写一堆注册表项,其中包含DLL所在位置的详细信息。 我的猜测是,您目前将此位置硬编码,您需要更改安装程序,以根据用户在安装VSTO时选择的位置来编写位置。

我不确定我是否完全理解了这个问题,但是你不能只使用System.Environment.Is64BitOperatingSystem来查看这是否是64位操作系统?

从这个评论....

当我在32位系统上安装我的应用程序并生成模板时,它会在模板中存储DLL的路径,但是当我尝试在64位系统上打开该excel模板时,它会搜索程序文件中存在的DLL引用,但DLL存在在Program Files(x86)文件夹中,我得到一个例外,我希望它现在清楚。

听起来好像你可能没有正确使用VSTO,尽管可能有一些我不知道的用法。

对于典型的VSTO插件,插件在EXCEL“Addins”键下注册。 无论是64位还是32位都没关系,您仍然只能注册一个(这是适用的)。

加载Excel时将加载插件,而不是在加载特定模板时加载。

加载模板时,插件通常会监视doc加载,然后根据需要做出反应。

我相信你可以使用VSTO构建一个“每个文档”类型的插件,但是如果你这样做,那么Excel根本不会在不同的安装类型的Excel中加载文档也不会让我感到惊讶,因为它们不是自动兼容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM