installation - WixUi 更改安装目录不起作用
问题描述
我正在使用 Wix Toolset 为我的应用程序创建安装程序,我对这项技术非常陌生。
我需要能够安装在每个用户和每台机器上,每个用户安装在%LOCALAPPDATA%
文件夹和每台机器上PROGRA~1
。
我试图从 Wix 工具集中遵循这个例子,但没有运气。
我还尝试设置我自己的界面(部分内容来自这篇文章),它没有过度编写安装文件夹:
<UI Id="UserInterface">
<Property Id="WixUI_Mode" Value="Custom" />
<TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" />
<TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="9" Bold="yes" />
<TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" />
<Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
<DialogRef Id="InstallScopeDlg"/>
<DialogRef Id="ProgressDlg" />
<DialogRef Id="ErrorDlg" />
<DialogRef Id="FilesInUse" />
<DialogRef Id="FatalError" />
<DialogRef Id="UserExit" />
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="InstallScopeDlg">1</Publish>
<Publish Dialog="InstallScopeDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish>
<Publish Dialog="InstallScopeDlg" Control="Next" Property="WixAppFolder" Value="{}" Order="2">WixAppFolder = "WixPerUserFolder"</Publish>
<Publish Dialog="InstallScopeDlg" Control="Next" Property="WixAppFolder" Value="1" Order="3">WixAppFolder = "WixPerMachineFolder"</Publish>
<Publish Dialog="InstallScopeDlg" Control="Next" Property="ALLUSERS" Value="{}" Order="4">WixAppFolder = "WixPerUserFolder"</Publish>
<Publish Dialog="InstallScopeDlg" Control="Next" Property="ALLUSERS" Value="1" Order="5">WixAppFolder = "WixPerMachineFolder"</Publish>
<Publish Dialog="InstallScopeDlg" Control="Next" Property="INSTALLFOLDER" Value="[WixPerUserFolder]" Order="6">WixAppFolder = "WixPerUserFolder"</Publish>
<Publish Dialog="InstallScopeDlg" Control="Next" Property="INSTALLFOLDER" Value="[WixPerMachineFolder]" Order="7">WixAppFolder = "WixPerMachineFolder"</Publish>
<Publish Dialog="InstallScopeDlg" Control="Next" Event="EndDialog" Value="Return">1</Publish>
<Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return">1</Publish>
</UI>
无论我在安装过程中选择哪个范围,安装程序都会尝试将文件写入文件PROGRA~1
夹。
我目前的猜测<Directory Id="ProgramFiles64Folder" />
是强制安装程序使用 Program Files 文件夹,这需要提升的权限。我已经尝试<Directory Id="INSTALLATIONLOCATION" />
将安装移动到 ProgramData,还尝试将ConfigurableDirectory
属性应用到我不起作用的功能。
我的 Product.wxs 配置:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="{GUID}" Name="My App" Language="1033" Version="1.0.0.0" Manufacturer="Company" UpgradeCode="{GUID}">
<Package InstallerVersion="301" Compressed="yes" InstallPrivileges=""/>
<WixVariable Id="WixUIBannerBmp" Value="Images\Banner.bmp" />
<WixVariable Id="WixUIDialogBmp" Value="Images\Dialog.bmp" />
<WixVariable Id="WixUISupportPerMachine" Value="1" />
<WixVariable Id="WixUISupportPerUser" Value="1" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." AllowSameVersionUpgrades="yes" />
<MediaTemplate EmbedCab="yes" />
<PropertyRef Id="NETFRAMEWORK45"/>
<Property Id="ARPPRODUCTICON" Value="icon.ico" />
<Property Id="ApplicationFolderName" Value="My App" />
<Property Id="WixAppFolder" Value="WixPerUserFolder" />
<Icon Id="icon.ico" SourceFile="Icon.ico"/>
<!-- Check for .NET version -->
<Condition Message="This application requires .NET Framework 4.5.2 or higher. Please install the .NET Framework then run this installer again.">
<![CDATA[Installed OR NETFRAMEWORK45]]>
</Condition>
<Directory Id="TARGETDIR" Name="SourceDir">
<Merge Id="VCRedist" SourceFile="Microsoft_VC141_CRT_x64.msm" DiskId="1" Language="0"/>
<Directory Id="ProgramFiles64Folder"> <!-- Is this the problem, how can I make this configurable depending on user selection?-->
<Directory Id="INSTALLFOLDER" Name="My App" />
</Directory>
<Directory Id="ProgramMenuFolder">
<Directory Id="ApplicationProgramsFolder" Name="Company"/>
</Directory>
</Directory>
<DirectoryRef Id="ApplicationProgramsFolder">
<Component Id="ApplicationShortcut" Guid="{GUID}">
<Shortcut Id="ApplicationStartMenuShortcut" Name="My App" Target="[#App.exe]" WorkingDirectory="INSTALLFOLDER"/>
<RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/>
<RegistryValue Root="HKCU" Key="Software\Company\My App" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component>
</DirectoryRef>
<Feature Id="VCRedist" Title="Visual C++ Runtime" AllowAdvertise="no" Display="hidden" Level="1" >
<MergeRef Id="VCRedist"/>
</Feature>
<Feature Id="ProductFeature" Title="My App" Level="1">
<ComponentGroupRef Id="MyFiles" />
<ComponentRef Id="ApplicationShortcut" />
</Feature>
<UI Id="UserInterface">
<!-- see above -->
</UI>
<UIRef Id="WixUI_Advanced" />
</Product>
我抓着稻草,找不到任何可靠的示例或文档来解决目录问题。如何将安装文件夹设置为%LOCALAPPDATA%
或PROGRA~1
取决于安装范围内的选择?
解决方案
推荐阅读
- vue-dropzone - 如何通过 vue-dropzone 更新图像?
- node.js - 如何在 express api 中设置消息并在反应本机应用程序中获取该消息
- java - 如何从文件中读取和拆分数据但在 Java 中也忽略一些数据
- mysql - 有没有办法遍历 Django 数据库对象中的所有字段并通过模板 HTML 显示它们?
- javascript - 三.js如何使用dat.GUI在控制面板中将数值转成度数?
- ios - 允许用户在 iOS 应用中切换应用跟踪同意状态
- ssl - 致命错误:openssl/bio.h:Yocto 中没有这样的文件或目录
- java - Springboot 执行器 DB 健康检查
- c# - 表示非托管内存
- machine-learning - 关于重尾分布的基本问题