gpt4 book ai didi

wix - 将绝对路径传递给 WiX 中的自定义操作

转载 作者:行者123 更新时间:2023-12-04 21:07:01 24 4
gpt4 key购买 nike

我正在使用 WiX 为我的应用程序创建安装程序

我有这个片段,它描述了我的应用程序的目标安装文件夹:

  <Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="CommonAppDataFolder">
<Directory Id="Company" Name="myCompany">
<Directory Id="App" Name="myProgram">
<Directory Id="SQLGENERATORINSTALLFOLDER" Name="SqlLiteFolder" />
</Directory>
</Directory>
</Directory>
</Directory>
</Fragment>

我还有一个自定义操作,它需要 [App]文件夹作为输入参数。如果我通过 [App]到自定义操作,我希望文件夹的整个路径,从 C:\一直到内部文件夹

我希望这样:

C:\ProgramData\myCompany\myProgram\



相反,我得到了这个:

C:\Windows\Installer\MSI971.tmp-C:\ProgramData\myCompany\myProgram\



看起来 WiX 正在附加某种临时文件夹

编辑

这就是我通过 [App] 的方式自定义操作的变量:
  <CustomAction Id='GrantAccessToDatabase' BinaryKey='ActionLib' DllEntry='GrantAccess' Execute='deferred' Impersonate='no' />
<Property Id="GrantAccessToDatabase" Value="DbFilePath=[App]" />

请注意,为了将变量传递给延迟的自定义操作,我需要使用该语法,这里解释了 ->
How to pass parameters to the custom action?

这是接收参数的 C# 部分:
[CustomAction]
public static ActionResult GrantAccess(Session session)
{
var data = session.CustomActionData;
var fullPath = data["DbFilePath"];
}

我希望 fullPath成为:

C:\ProgramData\myCompany\myProgram\



相反,我得到:

C:\Windows\Installer\MSI971.tmp-C:\ProgramData\myCompany\myProgram\

最佳答案

大多数情况下,您的安装程序已缓存,因此是临时文件夹。您可以改为连接完整路径:<...Value="DbFilePath=[CommonAppDataFolder]\myCompany\myProgram" /> .

关于wix - 将绝对路径传递给 WiX 中的自定义操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43089973/

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