【问题标题】:Writing to AppData from a Setup & Deployment Project从设置和部署项目写入 AppData
【发布时间】:2010-08-25 01:00:55
【问题描述】:

我正在更新通过安装和部署项目安装的现有应用程序。

旧应用程序在安装过程中将配置和数据库文件复制到应用程序的 Program Files 文件夹中。这在 Win 2000 和 Win Xp 上运行良好(在本地管理员帐户下)。然而,在 Windows 7 中,这不仅是不受欢迎的,而且由于 UAC,它基本上不起作用。

所以我想更新应用程序以将其配置/数据写入 CommonApplicationData。在现有的 Setup and Deployment 项目中,您可以轻松选择一些位置作为复制文件的目标。即应用程序文件夹、用户桌面和用户程序文件。

我没有看到告诉安装程序复制到 AppData / CommonApplicationData 文件夹的类似方法。是否存在,如果不存在,是否有任何简单的修复方法?

谢谢!

【问题讨论】:

    标签: .net windows-installer setup-deployment vdproj


    【解决方案1】:

    右键单击 |添加特殊文件夹 |自定义文件夹并将其命名为您想要的任何名称(通用应用程序数据文件夹会很好)

    在文件夹属性网格中,将 DefaultLocation 属性更改为 [CommonAppDataFolder]。

    将文件添加到文件夹,构建并安装。您应该在 Windows 7 上的 C:\ProgramData 中找到您的文件。

    请注意,我强烈推荐其他工具,例如 InstallShield 和 WiX,而不是 Visual Studio 部署项目。该工具的功能非常有限,您最终会碰壁。

    【讨论】:

    • 这在大多数情况下运行良好,但我在目录中添加了一些文件,包括数据库文件。我可以很好地写入文件夹中的新文件,并覆盖现有文件,但数据库说它是只读的。有什么想法吗?
    • MS-DOS 样式只读 (attrib +R) 还是 NTFS ACL 只读? (用户没有权限)(顺便说一句,这真的是一个新问题)
    • 对不起。我有点同意,但我认为这是密切相关的。使用上述方法,我可以创建文件和文件夹,但似乎这些文件夹是为标准用户创建为只读的,这似乎与使用应用程序数据文件夹的观点背道而驰。有没有办法编辑上述方法,以便安装和部署项目创建对标准用户可写的文件夹?
    • 您询问了如何将文件部署到 CommonApplicationData 文件夹,您没有询问该文件夹是否具有标准用户的默认写入权限。据我所知,Windows 没有提供如此知名的文件夹,我一直认为这很奇怪。 Windows Installer 可以通过 LockPermissions 表更改文件夹权限,但 Visual Studio 部署项目不会公开该权限。还记得我对砖墙的警告吗?对于一个简单的解决方案,将这些文件移动到 WiX v3 合并模块并使用 WiX 的 Permission 元素。然后在您的 VDRPOJ 安装中使用此合并模块。
    • 这就像将一个 EXE 重构为一个 EXE 和 DLL,并且从长远来看会导致更好的代码可维护性,并且合并模块现在代表一个单一的责任,并且 MSI 并不过分担心(上帝类) .
    猜你喜欢
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    相关资源
    最近更新 更多