代码之家  ›  专栏  ›  技术社区  ›  CodexArcanum

用C语言编写USB驱动器便携式应用程序#

  •  7
  • CodexArcanum  · 技术社区  · 15 年前

    拥有一个USB闪存存储设备,我最喜欢的事情之一就是随身携带一堆有用的工具。我想写一些工具,让它们在这种环境下工作得很好。我知道C最好,而且我在这方面很有效率,所以我很快就可以得到一个Windows窗体应用程序。

    但是,在制作便携式应用程序时,我应该考虑哪些因素呢?我能想到一些,但不知道答案:

    1)语言可移植性-好的,我知道在我使用它的任何机器上都需要安装.NET运行时。但是由于我经常使用一些Windows机器,所以这不应该是个问题。我可以使用另一种语言来编写代码,但随后我就失去了工作效率,特别是在一个简单的表单设计器方面。从闪存驱动器运行.NET应用程序是否还有其他问题?

    2)读/写周期-在C中,如何确保我的应用程序不会不必要地写入驱动器?我是否总是可以控制写操作,或者是否有任何“隐藏的写操作”需要说明?

    3)开放性问题:是否还有其他与我应该了解的可移植应用程序相关的问题,或者对其他具有良好IDE的语言的建议,这些建议将使我获得类似的生产力水平,但更好的可移植性?

    5 回复  |  直到 10 年前
        1
  •  10
  •   Michael    15 年前
    • 1)没有问题 从Flash运行.NET应用程序 驱动器。
    • 2)你应该控制 大多数写作。一定要写信给 温度或其他位置 硬盘,不在闪存上 驱动器。但是写周期不应该是 一个问题-即使是中度到重度 大多数闪存驱动器的使用寿命 岁月的流逝。
    • 3)就这样吧 像是任何有xcopy的应用程序 样式部署并尝试说明 如果你的应用程序失败 某些依赖项不在框中。
        2
  •  2
  •   Brian    15 年前

    如果要使用COM对象,请使用Reg-Free COM并将COM对象包含在程序中。

        3
  •  2
  •   Will Eddins ianpoley    15 年前

    你应该始终控制你的写作。应用程序应该在启动时加载到RAM中,然后在RAM中分配过去的内存,因此不会向闪存驱动器写入任何内容。

    对于可移植应用程序来说,最重要的是基本上不需要为应用程序安装。您不希望特别依赖注册表值,因为您的应用程序不会“安装”在其他计算机上。

    您可能会考虑的可移植应用程序的一个问题是数据持久性。通常,您会写入用户的应用程序数据文件夹以保存数据。如果是这种情况,则保存的任何数据都将仅应用于该计算机上的用户。如果您需要一些本地应用程序数据,您可能希望为您的设置创建一个已搜索的XML文件,并将其存储在应用程序的目录中。这种文件写入可能是您唯一需要担心的写入操作。

    对于.NET可移植性问题,您还可以在C++中编写一个小的入门程序,它检查计算机是否安装了.NET。.NET具有注册表值,您可以检查以查看安装的版本,因此如果安装了.NET,请运行应用程序,否则将显示一条消息,说明需要首先安装.NET。

    编辑: 我想补充一下,我在C 3.0中使用XAML为超声波机器进行应用程序开发。我编写的应用程序在USB闪存驱动器上工作得很好,而所有用户设置都存储在本地AppData基础上,因此不会向USB写入任何内容。虽然可以通过.exe安装程序安装应用程序,但安装程序不会写入应用程序所依赖的任何注册表值。

        4
  •  0
  •   Ryan Bolger    15 年前

    我对1或3没有真正的答案。但是对于2,.NET CLR不应该写入应用程序的“安装”文件夹(即闪存驱动器),除非您的代码专门告诉它,或者正在使用和修改与应用程序一起使用的基于文件的设置(ini、xml等)。

    如果你不只是为了个人目的而写东西,那么第一个问题就更重要了。显然,在拇指驱动器上托管完整CLR的可移植副本是不可能的。但是有一些工具可以扫描程序集的依赖项并将它们打包成独立的.exe,这样就不必在目标系统上安装clr。

        5
  •  0
  •   nasci    10 年前

    我实际上对此没有任何经验,所以最好还是用一小撮盐来表达我的看法。但这是我的看法:

    你不需要做任何特别的事情。

    对于一个应用程序开发人员来说,写驱动器的方式和时间并不是真正的考虑因素,这是操作系统更好地控制的事情。我知道Windows缓存写入USB驱动器,所以我相信它能处理这一点。

    唯一需要考虑的是,您的应用程序将不会被安装。因此,您需要确保将其设计为在部署到的目录中完全独立地运行。您也可以选择对用户主目录进行一些写入,但这需要通过适当的环境变量来完成。

    我会写信,看看操作系统是否能处理闪存驱动器的特殊问题。