【问题标题】:Change Published Project Install Directory in Windows8.1在 Windows 8.1 中更改已发布的项目安装目录
【发布时间】:2015-02-09 17:44:27
【问题描述】:

我在发布项目时尝试更改项目的默认安装目录,但我似乎无法选择已发布的 setup.exe 实际放置程序的位置。似乎在 setup.exe 运行并安装应用程序后,所有处理的文件都在C:\Users\{username}\AppData\Local\Apps\2.0\ 的文件夹下(类似的,我不记得确切的目录,因为它很长)。这不是我想要的,因为我将程序安装在 C:\Program Files\ 中,但所有日志文件都转到 C:\Users\{username}\AppData\Local\Apps\2.0\。这真的很烦人。

我发布的应用是C# Windows Form Application

我在网上浏览了一下,发现有人建议使用 Visual Studio 安装项目为 C# Windows 应用程序创建一个 MSI 包,而不是发布程序:

Publish Windows form application how change the installation path

假设上面的网站可以解决这个问题。发布 C# Windows 窗体应用程序后,是否有其他解决此重定向问题的建议?谢谢。

【问题讨论】:

  • 如果您使用 ClickOnce,这就是设计使然。为什么这会给您带来问题?
  • 我的问题与 ClickOnce 无关,是安装程序并运行后日志文件重定向到“C:\Users{username}\AppData\Local\Apps\2.0\”,这不是我需要的。我需要它们位于“C:\Program Files\”的文件夹下
  • 它们需要在 %ProgramFiles% 本身中,还是仅在可预测的目录中?
  • 是的,它们需要在 %ProgramFiles% 中,并且安装程序生成的任何日志文件都应该在 %ProgramFiles% 而不是“C:\Users{username}\AppData\Local\Apps\ 2.0\".
  • 显示部分代码如何创建日志。 %ProgramFiles% 绝对不是应用日志文件的好位置。

标签: c# windows


【解决方案1】:

当您在 Visual Studio 中使用 发布 功能时,您正在创建单击一次发布。这种类型的部署有相对固定的规则,并不是所有的东西都可以配置。它总是安装到 Windows 用户配置文件下的混淆文件夹中。这与 Windows 8.1 下无法更改 windows-store 现代应用程序的安装位置类似。

您可以为您的应用创建 MSI 安装项目 - 但在 Visual Studio 2012 中缺少这种类型的项目,它在 Visuals Studio 2013 中重新引入。您可以在此处指定安装文件夹。您还可以将 Install Shield Lite 与 Visual Studio 2012 一起使用。

你写道:

这不是我想要的,因为我将程序安装在 C:\Program 文件\

无法使用 Visual Studio 中的“发布”按钮将 ClickOnce 应用程序安装到 C:\Program Files\

如果您只是对日志文件的位置有疑问,则需要在应用程序代码中指定不同的文件夹。确保运行您的应用程序的用户对该文件夹具有写入权限 - 它应该位于某个用户的个人资料文件夹或公共文件夹中。避免将 %ProgramFiles% 作为日志文件的文件夹 - 这不是一个好习惯。

您应该使用所有用户(包括非管理员)都可以访问的路径,而不是 Application.StartupPath,例如:

Path.Combine(Environment.GetFolderPath(SpecialFolder.CommonApplicationData),"MyCompanyName")

【讨论】:

  • 我已经在我的应用程序代码中修复了位置目录,因为我尝试了很多方法。尽管这种固定的编码方式有效,但我认为这不是一个好的解决方案。是否可以将 Install Shield Lite 与 Visual Studio 2013 一起使用,因为我的公司已经购买了 Visual Studio Professional 2013。
  • 感谢 Vojtěch Dohnal 的帮助,我想问您“避免将 C:\Program Files\ 作为文件夹”是否是 Windows 8.1 的潜在错误,因为它适用于 Windows XP,也许视窗 7。
  • 至少从 XP 开始,最好不要在程序执行期间向 ProgramFiles 写入任何内容,因为用户在那里没有写入权限。在 Windows 7 和 8 中,有所谓的 VirtualStore,只要 UAC 处于活动状态,它就会被重定向到 C:\Users\AppData\Local\VirtualStore\Program Files 虽然这似乎不是你的电脑上发生的情况文件夹不同。如果您想遵循微软的最佳实践,用户日志仍应位于用户系统日志的 appdata 中的程序数据中
  • 是的,XP 对开发人员来说很不错,但是 Windows 7 和 8 引入了这种我不喜欢的 VIrtualStore。使用起来很不方便。
【解决方案2】:

您可以使用 InstallShield 创建安装向导/设置。

Here's the free version for Visual Studio

【讨论】:

    猜你喜欢
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 2015-11-20
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多