【问题标题】:What target folder should I install my application to that will never require uac elevation?我应该将我的应用程序安装到哪个目标文件夹永远不需要 uac 提升?
【发布时间】:2011-12-30 17:49:04
【问题描述】:

我有一个应用程序,我正在为它开发安装程序。假设我希望安装不需要提升并且我希望应用程序本身永远不需要提升并且我希望应用程序的更新程序(内置)永远不需要提升我应该将应用程序安装到哪里?

注意事项:

  1. 此应用程序未签名。
  2. 如果每个用户都必须在他们的配置文件下单独安装它,我可以。
  3. 我可以在安装中使用注册表来实现相同的目标吗?
  4. 它所做的唯一写入是设置/配置文件。
  5. .NET 4 应用程序。

【问题讨论】:

  • 您是在问如何从 WIX 或 .NET 获取路径?两者是不同的。

标签: c# .net wix windows-installer user-profile


【解决方案1】:

常见的选择是SHGetFolderPath(CSIDL_LOCAL_APPDATA)(Win2K 及更高版本)或SHGetKnownFolderPath(FOLDERID_LocalAppData)(Vista 及更高版本)返回的本地 appdata 文件夹。

这个返回的路径类似于:

  • “C:\Users\arx\AppData\Local”(Vista 及更高版本)
  • “C:\Documents and Settings\arx\Local Settings\Application Data”(Vista 之前)

在此处创建公司名称和应用程序文件夹是正常的,因此您将完成如下路径:

“C:\Users\arx\AppData\Local\BlahSoft\BlahApplication”

更新

如果你想从 .Net 获得这条路径,你需要 Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

【讨论】:

  • SHGetKnownFolderPath 是 Win32 API,不是 .NET 也不是 WIX。此外,FOLDERID_LocalAppData 是应用程序 data 文件夹,而不是已安装程序文件夹。
【解决方案2】:

您的问题被标记为 WIX 和 .NET;两者对于已知文件夹路径有不同的语法。获取当前用户应用程序文件夹的 .NET 命令是 Environment.GetFolderPath(Environment.SpecialFolder.Programs)

如果您想安装到 WIX 路径,它具有每个已知文件夹的预定义属性; [ProgramFilesFolder] 是 32 位应用程序文件夹,[ProgramFiles64Folder] 是 64 位文件夹。

【讨论】:

  • 没有每个用户安装的程序目录,因此每个用户程序倾向于使用本地应用程序数据目录。 SpecialFolder.Programs 目录用于开始菜单快捷方式,而不是用于程序文件。 [ProgramFilesFolder] 和 [ProgramFiles64Folder] 需要提升。
猜你喜欢
  • 2011-01-25
  • 1970-01-01
  • 2017-05-22
  • 2022-11-12
  • 2011-05-21
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多