【发布时间】:2019-02-18 21:15:34
【问题描述】:
场景: 我创建了一个库项目,它为安装程序提供接口(使用安装盾创建的 exe)。我想检查安装程序文件夹中是否存在特定文件。
我试过以下:
1). Assembly.GetEntryAssembly().Location
// 抛出“对象引用未设置为对象的实例”
2). new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath
// 返回: C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll
3). Assembly.GetExecutingAssembly().Location
// 返回空字符串
4). AppDomain.CurrentDomain.BaseDirectory
// 无论实际路径如何,都返回“C:\Windows\syswow64\”
谁能告诉我如何从执行安装程序的位置获取目录路径?
【问题讨论】:
-
为什么不使用 InstallScript?然后您可以使用
SETUPEXEDIR属性。见:helpnet.installshield.com/installshield21helplib/helplibrary/… -
@KBO 我正在尝试从我创建的外部 dll 中实现它。我想从安装程序中获取路径作为最后的手段,因为我会为此更改库的大部分 API 接口。
标签: c# .net path installation