2013-04-11 91 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