gpt4 book ai didi

wix - 在 WIX 中执行自定义操作时未安装文件

转载 作者:行者123 更新时间:2023-12-04 00:05:22 25 4
gpt4 key购买 nike

我正在为我想要安装的软件包编写 WXS 文件。为了简单起见,假设我想安装 1 个文件,然后我想对其执行命令(在我的例子中,它是一个公共(public) GPG key ,我想在安装完成后导入它)。以下是我的 WXS 文件的相关部分:

<CustomAction Id="ImportKey" Directory="INSTALLDIR"
ExeCommand="[SystemFolder]cmd.exe /C gpg --import keyfile.key"
Return="check" />

<!-- Install file keyfile.key into C:\GnuPG -->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="INSTALLDIR" Name="GnuPG">
<Component Id="GnuPGConfiguration" Guid="E9469F1C-A875-1014-A3B3-DEF3264B13C4">
<File Name="keyfile.key" Id="KeyfileKey" />
</Component>
</Directory>
</Directory>

<Feature Id="GnuPGConfiguration" Level="1" Title="GnuPG Configuration">
<ComponentRef Id="GnuPGConfiguration" />
</Feature>

<!-- Run custom action after files are installed -->
<InstallExecuteSequence>
<Custom Action="ImportKey" After="InstallFiles">NOT Installed AND NOT PATCH</Custom>
</InstallExecuteSequence>

我可以成功构建 MSI。安装时,我使用 msiexec 并打开日志记录。那里说安装在自定义操作上失败,并且在日志中找到了正确的命令。手动运行它可以工作。如果我注释掉该命令的执行,该文件将安装在正确的位置(安装后存在 C:\GnuPG\keyfile.key)。

我没有运行 GPG 命令,而是尝试运行 dir ant 将其输出重定向到文件。查看它,我可以看到 keyfile.key 不在 C:\GnuPG 中的文件中。看起来该命令是在安装文件之前运行的。

关于我做错了什么有什么想法吗?

最佳答案

您需要阅读并理解:

Installation Phases and In-Script Execution Options for Custom Actions in Windows Installer

你会发现自己正在考虑需要

<CustomAction ... Execute="deferred" and Impersonate="no" ... />

此外,您可能需要限定 .key 文件的位置,因为当前目录不会是您想象的那样。

关于wix - 在 WIX 中执行自定义操作时未安装文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3780283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com