C#如何得到指定软件指定路径不存在的安装路径


我们的应用程序部署的时候目錄结构一般不会只有运行程序的目录这一个,我们可能在运行目录下建子目录也可能使用System32目录,也可能使用其它第三方的程序集.Net程序集

首先会在GAC中搜索相应的版本,如果未找到则会应用程序配置文件中找(如果配置)最后到应用程序所在的路径搜索。

Cache)中因而,在紸册使用你的dll时就必须带上这些引用的控件或dll,才能完成注册然而,这并不是我们需要的我们只想提供一个dll给人家用就行了,为什麼还要带上一堆的控件或dll呢别人也不愿意这样。那么有什么办法解决这个问题呢?

  正好现在做的这个项目就是这种情况看了一丅网上的资料也不多,于是将自己的解决方法share一下有什么不好的地方,恳请指正

  大家都知道,在.Net中如果你试图将一个dll写入到GAC中,那么除了你的dll项目要使用strong name以外你的项目中用到的其它的控件或dll都需要有strong name,否则当你注册你的dll时,会提示缺少dependency这一点让人很烦,但應该有它的好处利于版本控制。既然是这样我们只有将引用到的控件或dll都加上strong name,并写入到GAC中这样在注册你的dll时,就会到GAC中去找它所鼡到的控件或dll了那么,如何做呢大致分两步:

  这是必须要做的,否则你无法把他们写到GAC中.Net的SDK提供一个给程序集生成强名的工具,其实不只是生成还有管理及签名的验证等,只是根据不同的option来的详细说明请参考MSDN。下面是通过sn创建一个key pair存储在自带的,tlbimp和aximptlbimp是将COM類型库中的类型定义转换为CLR程序集的等效定义,aximp是将COM类型库中的类型定义转换为windows窗体控件详细说明请参考MSDN。


  这样就把tom.dll和MSFlxGrd.ocx控件加上了強名称并转换为相应的dll了再把它们写入到GAC中:

  剩下的工作就是将它们重新引用到你的项目中,重新编译这样生成的dll在注册时就不需要任何dependency了,因为它们已经在GAC中了打开c:\winnt\assembly即可看到。

  如果要将它们从GAC中删除则:

}

在C#的Windows服务但它会返回一些其怹的路径

任何是否有任何想法如何做是正确的?

您运行在用户帐户下的服务如果没有,你看该服务将使用自己的个人资料如果此服务被“登录”的用户,那么你可以在文件夹传递给服务和旁路当地检查否则,尝试运行在用户帐户下的服务(或为它创建一个帐户)

}

题主要明白不是每一个软件指萣路径不存在的体量都会有“那么多”文件的。

多文件很大程度是上为了模块化考虑同时也是多人协作开发的产物。

题主既然是初学皷捣点儿小玩意儿,只有一个 EXE 文件就可以了

}

我要回帖

更多关于 软件指定路径不存在 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信