W WIX, jak utworzyć niereklamowany skrót w profilu allusers? Jak dotąd udało mi się to osiągnąć tylko za pomocą reklamowanych skrótów. Preferuję niereklamowane skróty, ponieważ możesz przejść do właściwości skrótu i użyć „znajdź cel”.
W samouczkach, które widziałem, używaj wartości rejestru jako ścieżki klucza skrótu. Problem polega na tym, że używają HKCU jako roota. Gdy używany jest HKCU, a inny użytkownik odinstalowuje program (ponieważ jest on zainstalowany dla wszystkich użytkowników), klucz rejestru pozostaje. Kiedy używam HKMU jako root, pojawia się błąd ICE57, ale klucz jest usuwany, gdy inny użytkownik odinstaluje program. Wydaje się, że jestem popychany do korzystania z HKCU, chociaż wydaje się, że HKMU zachowuje się poprawnie (na użytkownika vs wszystkich użytkowników).
Kiedy próbuję utworzyć niereklamowany skrót, otrzymuję różne błędy ICE, takie jak ICE38, ICE43 lub ICE 57. Większość artykułów, które widziałem, zaleca „po prostu ignoruj błędy lodu”. Musi istnieć sposób tworzenia niereklamowanych skrótów bez tworzenia błędów ICE.
Prześlij przykładowy kod działającego przykładu.
Chociaż ten post jest dość stary, zawiera całkiem przydatne informacje i wygląda na nadal aktywny. Chcę zaznaczyć, że generalnie NIE potrzebujesz fikcyjnego klucza rejestru do swojego skrótu! AFAIK, to jest samouczek WiX i nie jest to MSI ani wymóg certyfikacji. Oto przykład bez klucza reg:
<Fragment Id="Folders"> <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="INSTALLFOLDER" Name="MyApp"> </Directory> </Directory> <Directory Id="ProgramMenuFolder"> <Directory Id="MyAppStartMenuDir" Name="MyApp"/> </Directory> </Directory> </Fragment> <Fragment Id="Components"> <Component Id="MyAppComp" Directory="INSTALLFOLDER" ...> <!--The advertise flag below is to bypass ICE errors in WiX, the actual shortcut will not be advertises if those are disabled globally with DISABLEADVTSHORTCUTS--> <File ..." KeyPath="yes"> <Shortcut Id="MyAppStartMenuLink" Directory="MyAppStartMenuDir" Advertise="yes" ... /> </File> <RemoveFolder Id="StartMenuDirRemoved" Directory="MyAppStartMenuDir" On="uninstall" /> </Component> </Fragment>
Zwróć uwagę, że spowoduje to umieszczenie skrótu razem z plikiem wykonywalnym w jednym komponencie. Jeśli to ci przeszkadza, użyj fikcyjnego klucza rejestru (jak w bardzo dobrze wyjaśnionej akceptowanej odpowiedzi własnej).
źródło
Spójrz na Od MSI do WiX, część 10 - skróty Alexa Shevchuka.
Lub post na blogu Roba Menchinga Jak utworzyć skrót do odinstalowywania (i przejść wszystkie testy ICE).
Zasadniczo ICE57 jest dość denerwujący ... ale oto (wydaje się, że działa) kod, którego używam dla skrótów na pulpicie :)
<Component Id="DesktopShortcut" Directory="APPLICATIONFOLDER" Guid="*"> <RegistryValue Id="RegShortcutDesktop" Root="HKCU" Key="SOFTWARE\My App\1.0\settings" Name="DesktopSC" Value="1" Type="integer" KeyPath="yes" /> <Shortcut Id="desktopSc" Target="[APPLICATIONFOLDER]MyApp.exe" Directory="DesktopFolder" Name="My Applications" Icon="myapp.ico" IconIndex="0" WorkingDirectory="APPLICATIONFOLDER" Advertise="no"/> <RemoveFolder Id="RemoveShortcutFolder" On="uninstall" /> <Condition>DT_SHORTCUT=1</Condition> </Component>
źródło