2014-03-04 51 views
1

我試圖將圖標添加到快捷根據我的WiX 3.8 exe文件在Visual Studio中使用:WIX快捷圖標EXE增加了EXE兩次

<Component Id="my.exe" Guid="MY-GUID"> 
    <File Id="my.exe" Source="$(var.Project.TargetPath)" KeyPath="yes"> 
     <Shortcut Id="MyShortcut" Directory="ApplicationMenuFolder" Name="My App" WorkingDirectory="ApplicationRootFolder" Icon="my.exe" IconIndex="0" Advertise="yes"> 
     <Icon Id="my.exe" SourceFile="$(var.Project.TargetPath)" /> 
     </Shortcut> 
    </File> 
    </Component> 

的問題是,文件$(var.Project.TargetPath)添加到兩次MSI。我可以通過刪除圖標引用來證明它。如果我刪除MSI比使用Icon引用小3MB。

如何設置EXE快捷方式圖標,它將使用相同的EXE,不要將它兩次添加到MSI?

回答

3

我不是100%確定(在安裝程序參考中找不到任何明確的內容),但我認爲宣傳的快捷方式不能使用存儲在exe中的圖標。該圖標需要流式傳輸到圖標表中並緩存在安裝程序緩存中。如果你想保存3MB你需要使它不是做廣告,或從exe中刪除圖標,並將其單獨存儲在圖標表中

0

當你添加該圖標時,你只是添加一個圖標進入MSI文件的圖標表。這與快捷方式定義沒有任何關係。所以我不確定你想要解決什麼問題,雖然我可以看到爲什麼你會得到一個更大的MSI文件。你是說缺少快捷方式,還是有錯誤的圖標或別的東西?

+0

我只是想避免添加到MSI兩次相同的文件(在這種情況下EXE)。這是我如何理解智能佈線 - 避免兩次將相同的文件添加到msi。 – Marcin

+0

智能電纜只能標準化放置在出租車中的文件。它不會查看其他博客存儲位置,例如二進制表或圖標表。儘管如此,它看起來像是WiX從源路徑提取資源的功能請求/缺陷,並且只將資源放在表中而不是整個EXE。儘管如此,Windows Installer Icon表格確實表示Icon可以採用PE(EXE/DLL)格式。 –

+0

謝謝,爲了解釋,我是來自Old VS Setup的WiX新手。它在那裏工作......我已經提取了圖標並分開放置。 – Marcin

1

您正在使用的exe文件圖標文件:

<Icon Id="my.exe" SourceFile="$(var.Project.TargetPath)" /> 

如果你想使用較小的文件,如.ico文件,更改圖標/ @的源文件中引用它。但是,是的,您仍需要@Id才能擁有與[快捷方式]指向的文件相同的擴展名(.exe)。

+0

謝謝指出,只有第_Id_必須有擴展名! – tiands

2

這是當前的WiX行爲。我已經提交了一個feature request來改善這個故事。如果您想要更改,請隨時留下評論。否則,我懷疑Rob會按照設計說出功能。

作爲解決方法,從EXE中提取圖標並將其用於Icon元素。

+0

好吧,我會爲該請求添加評論。 – Marcin