手持设备上的哪些位置被安装的.exes用于其依赖文件? [英] Which locations on a handheld device are used by installed .exes for their dependent files?

本文介绍了手持设备上的哪些位置被安装的.exes用于其依赖文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对我有一个奇怪的情况:我正在工作的项目的旧.exe运行在手持设备上。新版本(即使是完全相同的代码,没有添加)。



即使在一台手持设备上运行的.exe也不在另一台。有关某些血清细节,请参见



根据这个,我以为我可以跟踪问题。



但是这个PC util告诉我什么是(PC /构建机器)环境。我需要知道CE设备上的缺失/错误。



所以为了在我的电脑上假冒那个环境,我需要复制到PC上? IOW,哪个目录将在CE设备上的.exe找到它的必需品?



更新



不令人惊讶的是, CF Whisperer (ctacke)是对的。这是我在.csproj文件中看到的:



在较新的/ 3190设备上运行的实用程序:

 < NativePlatformName> Windows CE< / NativePlatformName> 
< TargetFrameworkVersion> v3.5< / TargetFrameworkVersion>

在较新的/ 3190设备上运行的旧版应用程序:

 < PlatformFamilyName> WindowsCE< / PlatformFamilyName> 
< TargetFrameworkVersion> v2.0< / TargetFrameworkVersion>

由于我在新旧版本的源代码之间来回切换,像一只妈妈一样咆哮着,他们的小熊已经被一只美洲狮咬住了,终于让它变得真正的COMPILE和BUILD了,我不想把这个项目升级到3.5,我会把它留在2.0,而不是降级设备。



那么,我如何将手持设备降级到旧的CF版本?



更新2



所以这一切都是有道理的:



一台手持设备(3190)安装了CF 3.5;因此,用于CE 3.5的实用程序运行在其上,而针对CE 2.0构建的应用程序不支持。



OTOH,另一台手持设备(摩托罗拉/符号3090) CF 2.0安装(Windows \cgacutil.exe报告为Compact Framework 1.0.3316.00)。为CE 2.0创建的应用程序运行在它上面,但实用程序没有。



Arghhh !!!!!!!!!!!!!!! !!



版本控制是一种女性化的说服力,所以可以说!



为什么操作系统和子系统不是更聪明,以便它们自动检测到这种格局,并且默默地自动修复这样的或者至少提供一个点击按钮来为您做的?我讨厌花费我的日子在机箱下面肮脏的油滴在我的窥视者身上。



所以,一种扭曲的逻辑(请告诉我,如果我错了),以下情况如下:

  Windows CE 2.0 == CF 1.0.3316.00 
Windows CE 3.5 == CF ???? (3190设备没有cgacutil.exe,所以我看不到该版本是什么)



现在,我如何删除较新版本的CF并将其替换为较小/较旧版本?



我现在记得,这个项目(谁滥用)说我们不能使用3.5(空间/内存问题),所以尝试将目标2.0升级到3.5不是一个选项。



注意: 3090(Symbol)具有操作系统版本05.00.1400
Windows CE版本5.00(Build 1400)



3190 Motorola)具有操作系统版本6.00.000
Windows CE版本6.00

解决方案

您有一些陌生(错误)你的问题。有一点教育的时间(我的> 15年的CE应用程序开发者偶尔会付出代价)。



就版本控制而言,Windows CE和Compact Framework完全不相关。嗯,有一些X支持Y的东西,但否则它们是无关的。



Windows CE 2.0可追溯到1998年或1999年。在那个时候,存在,它是eVB。您没有运行CE 2.0。我保证。



对于Compact Framework,有四个主要版本,每个版本都有一些服务包。




  • CF 1.0 - 与Studio 2003一起发布。在CE 5.0发布之前,自CF 2.0发布以来,CE 5.0天没有看到。

  • CF 2.0 - 与Studio 2005一起发布。这个在运行CE 5.0和CE 6.0的旧手持设备中很常见。

  • CF 3.5 - 与Studio 2008一起发布。它可以安装在很多较旧的硬件上。

  • CF 3.9 - 发布于Studio 2012.仅适用于WEC2013。



如果您有一个报告CF 1.0的设备,那么它只能运行一个为1.0构建的应用程序。支持CF 1.0应用程序的构建以Studio 2005结尾。如果硬件具有空间和内存,则可以安装较新版本的CF(通过CAB文件)。



如果您有设备报告CF 2.0,它可以运行CF 1.0或CF 2.0应用程序。再次,如果您有空间和内存,您可能会更新到3.5。



如果您有设备报告CF 3.5,它可以运行CF 2.0应用程序1.0应用程序,虽然我怀疑我在十年内已经尝试过了)。



您不能删除ROM中的任何版本的CF。但是,您可以并排安装。通常不建议使用旧版本,因为新版本的CF将运行为旧版本构建的应用程序。



有时您可能会发现具有CF 3.5的设备无法运行一个2.0应用程序有一些兼容性奇怪的东西。在这种情况下,您可以通过修改app.config文件并显式设置SupportedRuntime来强制CF 3.5实际运行在2.0模式(无需安装2.0位)。 查看此MSDN页面


I have what seems to me an odd situation: an old .exe of the project on which I'm working runs on a handheld device. New versions don't (even the exact same code with no additions).

Even that .exe that runs on one handheld device doesn't on the other. See this for some of the gory details.

Based on this, I thought I could track down the problem.

But this PC util tells me what is missing from that (PC/build machine) environment. I need to know what is missing/wrong on the CE device.

So to "fake" that environment on my PC, which files from the handheld do I need to copy over to the PC? IOW, in which directories will an .exe on a CE device look for its necessaries?

UPDATE

Not surprisingly, the CF Whisperer (ctacke) is right. Here's what I see in the .csproj files:

The utility which does run on the newer/3190 device:

<NativePlatformName>Windows CE</NativePlatformName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

The legacy app which does not run on the newer/3190 device:

<PlatformFamilyName>WindowsCE</PlatformFamilyName>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>

As I've gone back and forth between new and old versions of the source, scrapping and snapping and growling like a mama bear whose cubs have been cornered by a cougar, and finally got it to actually COMPILE and BUILD again, I don't want to upgrade the project to 3.5; I'll leave it at 2.0 and instead "downgrade" the device.

So: how can I "downgrade" the handheld device to the older CF version?

UPDATE 2

So it all (sort of) makes sense now:

One handheld device (3190) has CF 3.5 installed; thus, the utility built for CE 3.5 runs on it, whereas the app built for CE 2.0 does not.

OTOH, the other handheld device (Motorola/Symbol 3090) has CF 2.0 installed (which Windows\cgacutil.exe reports as Compact Framework version 1.0.3316.00). The app built for CE 2.0 runs on it, but the utility does not.

Arghhh!!!!!!!!!!!!!!!!!

Versioning is a canine of the feminine "persuasion," so to speak!

Why aren't operating systems and subsystems "smarter" so that they automatically detect this sort of arcana and either silently automatically fix such, or at least offer to do it for you at the click of a button? I hate spending my days squished under the chassis with dirty oil dripping in my peepers.

And so, in a twisted sort of logic (please advise me if I'm wrong), the following is the case:

Windows CE 2.0 == CF 1.0.3316.00
Windows CE 3.5 == CF ???? (the 3190 device does not have "cgacutil.exe", so I can't see what the version is)

And now: how can I remove the newer version of CF and replace it with the lesser/older version?

I do remember now that the erstwhile leader of this project (who has absquatulated) said we couldn't use 3.5 (space/memory issues) so trying to upgrade the project from targeting 2.0 to 3.5 is not an option.

Note: The 3090 (Symbol) has OS Version 05.00.1400 Windows CE Version 5.00 (Build 1400)

The 3190 (Motorola) has OS Version 6.00.000 Windows CE Version 6.00

解决方案

You have some strangeness (and wrongness) in your question. Time for a little education (my >15 years of CE app dev occasionally pays off).

As far as versioning goes, Windows CE and the Compact Framework are totally unrelated. Well, there's some "X supports Y" sort of stuff, but otherwise they are unrelated.

Windows CE 2.0 dates to 1998 or 1999. At that point the CF didn't exist, it was eVB. You are not running CE 2.0. I guarantee it.

For the Compact Framework, there are 4 major versions, with some service packs for each.

  • CF 1.0 - Released with Studio 2003. Not seen much past CE 5.0 days since CF 2.0 was released while CE 5.0 was in the field.
  • CF 2.0 - Released with Studio 2005. This one is pretty common in older handhelds running CE 5.0 and CE 6.0
  • CF 3.5 - Released with Studio 2008. This one is somewhat common in newer hardware. It can be installed on a lot of older hardware.
  • CF 3.9 - Released with Studio 2012. Only works on WEC2013.

If you have a device that's reporting CF 1.0, then it can only run an app built for 1.0. Support for building for CF 1.0 apps ended with Studio 2005. You may be able to install a newer version of the CF (via CAB file) if the hardware has space and memory for it.

If you have a device reporting CF 2.0, it can run CF 1.0 or CF 2.0 apps. Again, you may be able to update to 3.5 if you have space and memory.

If you have a device reporting CF 3.5, it can run CF 2.0 apps (and probably 1.0 apps, though I doubt I've tried that in a decade).

You cannot remove any version of the CF in ROM. You can, however, install side-by-side. Installing an older version is generally not recommended nor necessary since newer versions of the CF will run apps built for older versions.

Occcasionally you may find that a device with CF 3.5 cannot run a 2.0 app. There were a couple compatibility weirdness things. In those cases you can force the CF 3.5 to actually run in 2.0 mode (without having to install the 2.0 bits) by modifying your app.config file and explicitly setting the SupportedRuntime. Take a look at this MSDN page.

这篇关于手持设备上的哪些位置被安装的.exes用于其依赖文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆