2013-04-11 69 views
1

新手到WiX这里...我创建了我的WiX安装程序包,它正确安装了所有功能。然后,我尝试添加一个UI将其与下列内容:WiX 3.7 UI没有正确链接

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

和我联系 “光-ext WixUIExtension -cultures:EN-US”。它找到了这个扩展名,因为如果我用一个不存在的名字尝试它,它会给出错误,但生成的msi包只有30kb。如果UI扩展连接正确,我认为这应该稍大些?

当我运行msi时,它只是给出了正常的进度条,没有额外的UI,我期望从WixUI_Minimal。

所有的参考文献似乎声称,一个简单的UIRef是你需要得到一个用户界面,当包正确链接......是否有一种已知的方式,链接不会正确发生,没有错误被抛出(甚至当我与-pedantic链接)?

+0

您是否为UI DLL添加了参考? – 2014-06-30 07:30:24

回答

1

添加UI时,MSI可能不会明显更大。默认情况下提供的图形并不多。但是,如果您在安装过程中没有看到用户界面,则表示用户界面未连接。

UIRef需要位于引用区域中。链接器的第一部分是Product元素。如果您的UIRefProduct的孩子,那么它肯定会链接进去。然后,链接程序遍历Product元素中的所有引用(与其他许多属性一样,以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对我们的帮助。

+0

嘿,今天早上我做了一个非常非常简单的例子,并试图找出这个错误发生的地方是我试图构建这个项目的过程。我有一个批处理文件,在该文件中我使用-arch x86对其执行了两次蜡烛处理,然后将-arch x64连接到两个obj文件,然后将它们连接到它们自己的msi。如果我运行灯光,然后立即蜡烛在32位一个它会给我一个正确的微星与最小的用户界面。但是64位的显然还是不正确的。有可能建立一个64位的msi,并将其与WixUIExtension在32位平台上链接,不是吗? – 2013-04-12 00:04:02

+0

是的,它应该工作。 – 2013-04-12 03:01:02