我正在创建一个WIX安装程序项目。在一个托管的自定义操作期间,我需要在安装文件夹中创建一个文件(除了WIX组件中指定的已部署文件),默认情况下是Program Files文件夹。我在Windows 7中遇到“拒绝访问”问题。经过一些搜索,我发现有人说不建议在Program Files文件夹中创建文件。相反,尝试将文件创建为例如AppData文件夹。例如,请看这个链接: C# Access denied to path in a Windows Application
但我的问题是,生成的文件对我们的SW至关重要,因此它必须位于安装文件夹中。是不是SW安装的目标,我的意思是,在大多数情况下创建文件Program Files文件夹?这是否意味着在安装过程中应该将唯一的文件添加到安装文件夹中,是部署的文件(基本上是XCopy的目标)?
我的文件无法在WIX中部署,即在安装之前无法使其准备就绪。那么处理这种情况的正确方法或最佳实践是什么:必须在安装期间将文件生成到安装文件夹中。它不是我可以放在其他地方的一些日志文件。我尝试在WIX中为INSTALLADIR创建一个Permission元素,虽然它似乎违反了链接中提到的规则,但它仍然失败了。谢谢!
更新:
基于MichaelUrman的一个评论,更多信息。在安装SW之后需要生成的文件,并且在SW的正常启动期间是必需的。我认为在安装后的正常使用过程中需要对其进行修改。当我提到我对@caveman_dick回答的评论时,我的CA实际上处于提交阶段,我不知道它与正常延期CA之间是否存在任何差异
答案 0 :(得分:3)
将自定义操作设置为Execute="deferred"
,这将运行提升的命令,并为其提供创建文件所需的权限。
答案 1 :(得分:1)
由于您需要从主应用程序更新该文件,并且我假设您的应用程序不需要提升权限,因此您有三个选项。