如何更改已使用 wix 安装程序创建的文件的权限
How to change the permissions of the file that is already created using wix installer
我的要求是,在安装较旧的安装程序包时,会在 ProgramData 文件夹中使用系统权限创建文件 (Config.txt)。
从代码中,我们无法在没有管理员权限的情况下删除该文件。
出于这个原因,在安装较新的安装程序时,我想更改文件的权限,以便从代码中删除该文件。
我是 Wix 安装程序的新手,我正在尝试如下所示。但它不起作用。
下面是代码片段:
<Property Id="PROGRAMDATA" Value="C:\ProgramData\TestApp\Config"/>
<Property Id="APP_SEARCH">
<DirectorySearch Id="APP_DIR" value="[PROGRAMDATA]" Depth="0">
<FileSearch Id="FILE_SEARCH" Name="Config.txt" />
</DirectorySearch>
</Property>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="CommonAppDataFolder" ShortSourceName="Common~1" SourceName="CommonAppData">
<Directory Id="NEWINSTALLDIR">
<Directory Id="APPCORE" Name="APPCore">
<Component Id="APP" Guid="{681F6F86-00D7-41A3-8DBB-44AFE9880941}" KeyPath="yes">
<File Id="FILE_SEARCH" Name="Config.txt" Value="[PROGRAMDATA]" KeyPath="no">
<Permission GenericAll="yes" User="Everyone" Delete="yes"/>
</File>
<RemoveFile Id="FileKey3" Directory="APPCORE" Name="*" On="uninstall" />
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
使用 Permission 或 PermissionEx 更改文件权限仅适用于 created/installed 具有相同设置的文件。
在你的情况下,使用 cacls 将解决问题。
<!-- Edit file permissions -->
<CustomAction Id='UnlockFile' Directory='TARGETDIR' ExeCommand='echo Y | cacls "[MyFilePathProperty]" /C /E /G Users:W' Return='asyncNoWait' Execute='deferred'/>
<InstallExecuteSequence>
<Custom Action='UnlockFile' Before='InstallFinalize'>NOT REMOVE</Custom>
</InstallExecuteSequence>
我的要求是,在安装较旧的安装程序包时,会在 ProgramData 文件夹中使用系统权限创建文件 (Config.txt)。 从代码中,我们无法在没有管理员权限的情况下删除该文件。 出于这个原因,在安装较新的安装程序时,我想更改文件的权限,以便从代码中删除该文件。
我是 Wix 安装程序的新手,我正在尝试如下所示。但它不起作用。
下面是代码片段:
<Property Id="PROGRAMDATA" Value="C:\ProgramData\TestApp\Config"/>
<Property Id="APP_SEARCH">
<DirectorySearch Id="APP_DIR" value="[PROGRAMDATA]" Depth="0">
<FileSearch Id="FILE_SEARCH" Name="Config.txt" />
</DirectorySearch>
</Property>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="CommonAppDataFolder" ShortSourceName="Common~1" SourceName="CommonAppData">
<Directory Id="NEWINSTALLDIR">
<Directory Id="APPCORE" Name="APPCore">
<Component Id="APP" Guid="{681F6F86-00D7-41A3-8DBB-44AFE9880941}" KeyPath="yes">
<File Id="FILE_SEARCH" Name="Config.txt" Value="[PROGRAMDATA]" KeyPath="no">
<Permission GenericAll="yes" User="Everyone" Delete="yes"/>
</File>
<RemoveFile Id="FileKey3" Directory="APPCORE" Name="*" On="uninstall" />
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
使用 Permission 或 PermissionEx 更改文件权限仅适用于 created/installed 具有相同设置的文件。
在你的情况下,使用 cacls 将解决问题。
<!-- Edit file permissions -->
<CustomAction Id='UnlockFile' Directory='TARGETDIR' ExeCommand='echo Y | cacls "[MyFilePathProperty]" /C /E /G Users:W' Return='asyncNoWait' Execute='deferred'/>
<InstallExecuteSequence>
<Custom Action='UnlockFile' Before='InstallFinalize'>NOT REMOVE</Custom>
</InstallExecuteSequence>