nra*_*ray 11 installer windows-installer wix
新手WiX的问题:我如何
1.复制一个一次性使用的shell脚本来临时与安装程序一起
如
<Binary Id='permissions.cmd' src='permissions.cmd'/>
Run Code Online (Sandbox Code Playgroud)
2.在安装结束时查找并运行该脚本.
例如
<CustomAction Id='SetFolderPermissions' BinaryKey='permissions.cmd'
ExeCommand='permissions.cmd' Return='ignore'/>
<InstallExecuteSequence>
<Custom Action="SetFolderPermissions" Sequence='1'/>
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)
我想我至少有三个问题:
在此示例中,permissions.cmd使用cacls.exe将具有写权限的交互式用户添加到%ProgramFiles%\ Vendor ACL.我也可以使用secureObject - 问题是"我如何将交互式用户添加到本地化Windows中的目录"?
我发现博客文章《从MSI到WiX,第5部分-自定义操作:简介》在我想了解WiX中的CustomActions时很有用。
您还可以在CustomAction Element中找到CustomAction的定义及其属性。
你需要做这样的事情
<CustomAction Id="CallCmd" Value="[SystemFolder]cmd.exe" />
<CustomAction Id="RunCmd" ExeCommand="/c permission.cmd" />
<InstallExecuteSequence>
<Custom Action="CallCmd" After="InstallInitialize" />
<Custom Action="RunCmd" After="CallCmd" />
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)
这是一个工作示例(用于设置权限,而不是用于运行脚本):
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder" Name="PFiles">
<Directory Id="BaseDir" Name="MyCo">
<Directory Id="INSTALLDIR" Name="MyApp" LongName="MyProd">
<!-- Create the folder, so that ACLs can be set to NetworkService -->
<Component Id="TheDestFolder" Guid="{333374B0-FFFF-4F9F-8CB1-D9737F658D51}"
DiskId="1" KeyPath="yes">
<CreateFolder Directory="INSTALLDIR">
<Permission User="NetworkService"
Extended="yes"
Delete="yes"
GenericAll="yes">
</Permission>
</CreateFolder>
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
Run Code Online (Sandbox Code Playgroud)
请注意,这是在Permission标记中使用'Extended ="Yes"',因此它使用SecureObjects表和自定义操作而不是LockPermissions表(请参阅权限元素的WiX文档).在此示例中,SecureObjects应用于MyProd目录的权限由子目录继承,而使用LockPermissions时则不是这种情况.
| 归档时间: |
|
| 查看次数: |
24204 次 |
| 最近记录: |