gpt4 book ai didi

wix - 如何安装到LocalAppData文件夹?

转载 作者:行者123 更新时间:2023-12-03 14:10:05 25 4
gpt4 key购买 nike

以下目录设置非常适合我。

<Directory Id='TARGETDIR' Name='SourceDir'>
<Directory Id="ProgramFilesFolder">
<Directory Id='INSTALLDIR' Name='MyApp'/>
</Directory>
</Directory>

但是,当我尝试将“ProgramFilesFolder”更改为“ LocalAppDataFolder ”时,使用 light链接并生成我的msi时遇到很多错误:
D:\runGroup.wxs(53) : error LGHT0204: ICE38: Component cmpA5561BE36D80EB58252E69DDA0C2FF8C installs to user profile. It must use a registry key under HKCU as its KeyPath, not a file.
D:\main.wxs(38) : error LGHT0204 : ICE64: The directory INSTALLDIR is in the user profile but is not listed in the Remove File table.

WiX似乎无法接受“LocalAppDataFolder”,但我相信它是 here中定义的系统文件夹属性之一。

我应该对LocalAppData文件夹使用什么?

最佳答案

我将应用程序从perMachine安装转换为perUser安装。为了正确转换安装,我必须为我拥有的每个组件添加一个注册表项。

最初我有以下内容:

<Component Id="C.MyExe">
<File Id="Fi.MyExe" Name="$(var.MyExe.TargetFileName)" Source="$(var.MyExe.TargetPath)" DiskId="1">
<Shortcut Id="SC.StartMenu"
Directory="D.ApplicationMenuDir"
Name="$(var.AppName)"
WorkingDirectory="INSTALLDIR"
Icon="MY_ICON.ico"
IconIndex="0"
Advertise="yes"
/>
...

当我将exe组件移至用户安装目录时,我必须执行以下操作:
<Directory Id="LocalAppDataFolder" Name="AppData">
<Directory Id="MyAppDirectory" Name="$(var.AppName)">
<Component Id="C.MyExe" Guid="{MY_GUID}">
<CreateFolder />
<RemoveFolder Id="RemoveMyAppDirectory" On="uninstall" />
<RegistryKey Root="HKCU" Key="Software\MyCompany\MyApp">
<RegistryValue Name="MainExe" Value="1" KeyPath="yes" Type="integer" />
</RegistryKey>
<File Id="Fi.MyExe" Name="$(var.MyExe.TargetFileName)"
Source="$(var.MyExe.TargetPath)" DiskId="1" Checksum="yes">
</File>
</Component>
...

最重要的部分是您将必须添加一个指向 HKEY_CURRENT_USER的注册表项。我为每个组件添加了一个注册表值,该值指示已安装该组件。

我还必须删除以下内容: Advertise="yes"

关于wix - 如何安装到LocalAppData文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12102771/

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