1

WiX 新手在这里...我已经创建了我的 WiX 安装程序包,它可以正确安装所有功能。然后我尝试使用以下内容向其添加 UI:

<UIRef Id="WixUI_Minimal" /> 
<UIRef Id="WixUI_ErrorProgressText" />

我链接到“light -ext WixUIExtension -cultures:en-us”。它找到了这个扩展,因为如果我用一个不存在的名称尝试它会出错,但生成的 msi 包只有 30kb。如果 UI 扩展正确链接,我认为这应该稍大一些?

当我运行 msi 时,它只提供正常的进度条,没有我期望 WixUI_Minimal 提供的其他 UI。

所有参考资料似乎都声称,当包正确链接时,您只需要一个简单的 UIRef 即可获得 UI……是否有一种已知的方法可以使链接无法正确发生而不会引发错误(即使我与-迂腐)?

4

1 回答 1

1

添加 UI 时,MSI 可能不会明显变大。默认提供的图形不多。但是,如果您在安装过程中没有看到 UI,这确实意味着该 UI 没有被链接。

UIRef需要在引用的部分中。链接器开始的第一部分是Product元素。如果你UIRef是它的孩子,Product那么它肯定会被链接进来。链接器然后遍历Product元素中的所有引用(以 a 结尾的任何东西Ref都是引用,就像许多其他属性一样)在其他元素中寻找所需的Fragment元素。然后链接器会拉入这些Fragment元素中的所有内容。例如:

<Product>
   <DirectoryRef Id='TARGETDIR' />
</Product>

<Fragment>
    <Directory Id='TARGETDIR' Source='SourceDir' />

    <BinaryRef Id='icon' />
<Fragment>

<Fragment>
    <Binary Id='icon' Source='path\to\my.ico' />
</Fragment>

<Fragment>
   <UIRef Id='WixUI_Minimal' />
</Fragment>

在上面的示例中,前三个部分将包含在链接器中。然而,这部分UIRef='WixUI_Minimal'被省略了,因为没有任何东西引用它。要修复它,UIRef可以将其移动到任何其他Fragment元素。

要进行测试,请尝试将您的元素移至UIRef您的Product元素。如果这不起作用,请在您的问题中提供更多详细信息,UIRef以便我们进一步提供帮助。

于 2013-04-11T13:19:11.153 回答