Wix - 未解决的对自定义对话框的引用
Wix - Unresolved reference to custom dialog
在我的安装程序中,我尝试启动一个 windows 程序,用户必须在该程序上执行一些与给出说明的页面并行的操作。为此,我添加了一个新页面 (as per this tutorial)。现在我想在此新对话框之前启动自定义操作,但出现以下错误:
错误 LGHT0094:未解析对 'Product:*'.
部分中符号 'WixAction:InstallUISequence/UserRegistrationDlg' 的引用
最小示例:
<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Product Name='Foobar 1.0' Id='*' Language='1033' Codepage='1252' Version='1.0.0' Manufacturer='Acme Ltd.'>
<Package InstallerVersion='300' Compressed='yes' />
<Directory Id='TARGETDIR' Name='SourceDir'/>
<UI Id="MyWixUI_FeatureTree">
<DialogRef Id="TheNewDialog" />
<UIRef Id="WixUI_FeatureTree" />
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="TheNewDialog" Order="2">LicenseAccepted = "1"</Publish>
<Publish Dialog="LicenseAgreementDlg" Control="Back" Event="NewDialog" Value="TheNewDialog">1</Publish>
</UI>
<CustomAction Id="WindowsFeatures" Directory="TARGETDIR" ExeCommand="OptionalFeatures.exe" Execute="immediate" Return="asyncNoWait" />
<InstallUISequence>
<Custom Action="WindowsFeatures" After="TheNewDialog" >
NOT Installed AND NOT DOTNETINSTALLED
</Custom>
</InstallUISequence>
</Product>
<Fragment>
<UI>
<Dialog Id="TheNewDialog" Width="370" Height="270" Title="[ProductName] [Setup]" NoMinimize="yes">
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="Cancel">
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
</Control>
</Dialog>
</UI>
</Fragment>
</Wix>
我尝试将其设置为 After="WelcomeDlg" 而不是 Before="TheNewDialog",但这会产生更有趣的错误:
- 错误 LGHT0094:未解析对 'Fragment:' 部分中符号 'Property:ApplicationFolderName' 的引用。
- 错误 LGHT0094:未解析对 'Fragment:' 部分中符号 'Property:WixAppFolder' 的引用。
我一直在四处寻找,这似乎与 WixUI_Advanced 有关,但我不知道我是如何触发 Wix 认为我正在使用它的。
我觉得我在做一些错误的引用错误的事情,但我似乎无法找到正确的方法,所以我希望有人能告诉我如何让它工作。
当然,在清理所有搜索选项卡时,我遇到了一些解决问题的方法,然后意识到了一些细节。
问题是我的新对话框不在 'InstallUISequence' 中,而是 WelcomeDlg 序列号上的流程的一部分。因此它不能在 before/after 中被引用。
解决方案是即使在 'InstallUISequence' 中也不要尝试设置自定义,而是将其放在按钮描述本身的按钮发布中,就像这样:
<Publish Event="DoAction" Value="WindowsFeatures">1</Publish>
或者稍后从 UI 块添加它时这样
<Publish Dialog="WelcomeDlg" Control="Next" Event="DoAction" Value="WindowsFeatures" >1</Publish>
不过我还是不明白 'WixUI_Advanced' 被拖进了故事里。
添加对 C:\Program Files (x86)\WiX Toolset v3.10\bin\WixUtilExtension.dll
的引用
在我的安装程序中,我尝试启动一个 windows 程序,用户必须在该程序上执行一些与给出说明的页面并行的操作。为此,我添加了一个新页面 (as per this tutorial)。现在我想在此新对话框之前启动自定义操作,但出现以下错误: 错误 LGHT0094:未解析对 'Product:*'.
部分中符号 'WixAction:InstallUISequence/UserRegistrationDlg' 的引用最小示例:
<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Product Name='Foobar 1.0' Id='*' Language='1033' Codepage='1252' Version='1.0.0' Manufacturer='Acme Ltd.'>
<Package InstallerVersion='300' Compressed='yes' />
<Directory Id='TARGETDIR' Name='SourceDir'/>
<UI Id="MyWixUI_FeatureTree">
<DialogRef Id="TheNewDialog" />
<UIRef Id="WixUI_FeatureTree" />
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="TheNewDialog" Order="2">LicenseAccepted = "1"</Publish>
<Publish Dialog="LicenseAgreementDlg" Control="Back" Event="NewDialog" Value="TheNewDialog">1</Publish>
</UI>
<CustomAction Id="WindowsFeatures" Directory="TARGETDIR" ExeCommand="OptionalFeatures.exe" Execute="immediate" Return="asyncNoWait" />
<InstallUISequence>
<Custom Action="WindowsFeatures" After="TheNewDialog" >
NOT Installed AND NOT DOTNETINSTALLED
</Custom>
</InstallUISequence>
</Product>
<Fragment>
<UI>
<Dialog Id="TheNewDialog" Width="370" Height="270" Title="[ProductName] [Setup]" NoMinimize="yes">
<Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="Cancel">
<Publish Event="SpawnDialog" Value="CancelDlg">1</Publish>
</Control>
</Dialog>
</UI>
</Fragment>
</Wix>
我尝试将其设置为 After="WelcomeDlg" 而不是 Before="TheNewDialog",但这会产生更有趣的错误:
- 错误 LGHT0094:未解析对 'Fragment:' 部分中符号 'Property:ApplicationFolderName' 的引用。
- 错误 LGHT0094:未解析对 'Fragment:' 部分中符号 'Property:WixAppFolder' 的引用。
我一直在四处寻找,这似乎与 WixUI_Advanced 有关,但我不知道我是如何触发 Wix 认为我正在使用它的。
我觉得我在做一些错误的引用错误的事情,但我似乎无法找到正确的方法,所以我希望有人能告诉我如何让它工作。
当然,在清理所有搜索选项卡时,我遇到了一些解决问题的方法,然后意识到了一些细节。 问题是我的新对话框不在 'InstallUISequence' 中,而是 WelcomeDlg 序列号上的流程的一部分。因此它不能在 before/after 中被引用。 解决方案是即使在 'InstallUISequence' 中也不要尝试设置自定义,而是将其放在按钮描述本身的按钮发布中,就像这样:
<Publish Event="DoAction" Value="WindowsFeatures">1</Publish>
或者稍后从 UI 块添加它时这样
<Publish Dialog="WelcomeDlg" Control="Next" Event="DoAction" Value="WindowsFeatures" >1</Publish>
不过我还是不明白 'WixUI_Advanced' 被拖进了故事里。
添加对 C:\Program Files (x86)\WiX Toolset v3.10\bin\WixUtilExtension.dll
的引用