【问题标题】:sfx path not working as expectedsfx 路径未按预期工作
【发布时间】:2017-10-02 16:46:38
【问题描述】:

我正在 Visual Studio 中为我的应用程序制作一个设置项目,但我遇到了一个小问题。

我想将大量文件复制到某个文件夹(我的文档 -> TEST)。所以我用 WinRAR 制作了一个无声的自解压 .exe 文件。当您双击该文件时,它会自动在其所在的同一文件夹中创建文件夹“FILES”,并自行将所有内容提取到该文件夹​​中。

因此,当您双击位于“D:\Documents\TEST”中的 files.exe 文件时,它会将所有文件提取到“D:\Documents\TEST\FILES”。

在设置项目中,我这样做了: -我将文件夹“用户的个人数据文件夹”添加到文件系统中,并在该文件夹中创建了文件夹“TEST”,并在那里添加了 files.exe。 我在提交部分创建了一个自定义操作,以运行该 files.exe 文件。

但是当我安装我的应用程序时,它会正确创建文件夹“D:\Documents\TEST”,并将 .exe 文件复制到那里,但由于某种原因,它会在 C:\Windows 位置创建“FILES”文件夹\SysWOW64 并在“C:\Windows\SysWOW64\FILES”中提取文件。

我怎样才能防止这种情况发生?

非常感谢您的帮助。

【问题讨论】:

    标签: c# visual-studio-2013 setup-project


    【解决方案1】:

    从基于 MSI 的安装中以自定义操作的形式运行某些内容与从交互式用户环境中运行相同的代码不同。运行自定义操作时的工作目录通常来自运行代码的 Windows 安装程序服务 - 没有魔法可以自动使工作目录与可执行文件的起始位置相同。这意味着任何代码都必须指定任何文件位置的确切路径,而不是依赖于工作目录。所以看起来程序中的代码只是创建了一个“FILES”目录,该目录正在进程的工作目录中创建,该目录是 32 位 Windows 系统位置。

    我不知道您是否编写了代码,也不清楚您的评论为什么引用环境变量。但是,任何 .NET 程序员都会使用 Environment.SpecialFolder.MyDocuments。如果您想向 Windows Installer 询问您从该列表中请求 PersonalFolder 属性的位置:

    https://msdn.microsoft.com/en-us/library/windows/desktop/aa370905(v=vs.85).aspx#system_folder_properties

    并且您的问题是您正在安装到“我的文档”文件夹,这是安装项目(文件系统视图)列表中的用户个人数据文件夹。所以你应该安装到安装项目中的那个文件夹。如果您更明确地了解代码的作用以及您将其称为自定义操作的确切方式,那么任何答案都可能更彻底。

    【讨论】:

    • 感谢您的回复。但据我所知,“我的文档”文件夹没有环境变量,所以我不知道如何为我的 sfx 文件获取该文件夹的确切位置。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-06
    • 1970-01-01
    • 2014-05-02
    • 2021-05-06
    • 2020-06-26
    • 2016-08-19
    相关资源
    最近更新 更多