내 질문에 대답하는 것이 나쁜 에티켓이라면 미안합니다.
최근에 DISABLEADVTSHORTCUTS 속성 에 대한 정보를 발견했습니다 . 광고 된 바로 가기를 사용하여 설치를 만들고 DISABLEADVTSHORTCUTS 속성을 1로 설정하여 광고되지 않은 바로 가기를 생성했습니다. 이는 공지 된 바로 가기가 파일을 키 경로로 사용할 수 있기 때문에 ICE43 오류를 우회합니다 . DISABLEADVTSHORTCUTS가 설정 되었기 때문에 Windows Installer는 이러한 광고 된 바로 가기를 일반 바로 가기로 바꿉니다.
나는 설정 패키지 요소의 "perMachine"에 InstallScope 속성을. 그러면 ALLUSERS 속성이 1로 설정됩니다. 그러면 ProgramMenuFolder 및 DesktopFolder 의 값이 모든 사용자 프로필로 확인됩니다.
ProgramMenuFolder 아래에 생성 된 폴더의 경우 RemoveFolder 및 RegistryValue 요소가 있습니다. 내가 본 예제 ( ex1 , ex2 )는 HKCU를 RegistryValue의 루트로 사용합니다. 이 루트를 ALLUSERS의 값에 따라 HKCU 또는 HKLM 으로 확인 하는 HKMU로 변경했습니다 .
간단히 말해, DISABLEADVTSHORTCUTS를 1로 설정하면 보급 된 바로 가기가 ICE 오류를 생성하지 않지만 설치시 보급되지 않은 바로 가기로 변환됩니다. 루트 HKMU가있는 RegistryValue는 광고되지 않은 바로 가기의 키 경로가 아닌 한 KeyPath에 적합합니다.
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Name="Foobar 1.0" Id="YOURGUID-21F1-4026-ABD2-7CC7F8CE4D18" UpgradeCode="YOURGUID-AFA4-46C6-94AA-EEE3D104F903" Language="1033" Codepage="1252" Version="1.0.0" Manufacturer="Acme Ltd.">
<Package Id="*" Keywords="Installer" Description="Acme's Foobar 1.0 Installer" Comments="Foobar is a registered trademark of Acme Ltd." Manufacturer="Acme Ltd." InstallerVersion="100" Languages="1033" Compressed="yes" SummaryCodepage="1252" InstallScope="perMachine" />
<Media Id="1" Cabinet="Sample.cab" EmbedCab="yes" DiskPrompt="CD-ROM #1" />
<Property Id="DiskPrompt" Value="Acme's Foobar 1.0 Installation [1]" />
<Property Id="DISABLEADVTSHORTCUTS" Value="1" />
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder" Name="PFiles">
<Directory Id="Acme" Name="Acme">
<Directory Id="INSTALLDIR" Name="Foobar 1.0">
<Component Id="MainExecutable" Guid="YOURGUID-3E4F-47A2-86F1-F3162E9C4798">
<File Id="FoobarEXE" Name="FoobarAppl10.exe" DiskId="1" Source="FoobarAppl10.exe" KeyPath="yes">
<Shortcut Id="startmenuFoobar10" Directory="ProgramMenuDir" Name="Foobar 1.0" WorkingDirectory="INSTALLDIR" Icon="Foobar10.exe" IconIndex="0" Advertise="yes" />
<Shortcut Id="desktopFoobar10" Directory="DesktopFolder" Name="Foobar 1.0" WorkingDirectory="INSTALLDIR" Icon="Foobar10.exe" IconIndex="0" Advertise="yes" />
</File>
</Component>
<Component Id="HelperLibrary" Guid="YOURGUID-C7DA-4C02-A2F0-A6E089FC0CF3">
<File Id="HelperDLL" Name="Helper.dll" DiskId="1" Source="Helper.dll" KeyPath="yes" />
</Component>
<Component Id="Manual" Guid="YOURGUID-FF92-4BF4-A322-819A3B2265A0">
<File Id="Manual" Name="Manual.pdf" DiskId="1" Source="Manual.pdf" KeyPath="yes">
<Shortcut Id="startmenuManual" Directory="ProgramMenuDir" Name="Instruction Manual" Advertise="yes" />
</File>
</Component>
</Directory>
</Directory>
</Directory>
<Directory Id="ProgramMenuFolder" Name="Programs">
<Directory Id="ProgramMenuDir" Name="Foobar 1.0">
<Component Id="ProgramMenuDir" Guid="YOURGUID-D1C2-4D76-BA46-C6FA79862E77">
<RemoveFolder Id="ProgramMenuDir" On="uninstall" />
<RegistryValue Root="HKMU" Key="Software\[Manufacturer]\[ProductName]" Type="string" Value="" KeyPath="yes" />
</Component>
</Directory>
</Directory>
<Directory Id="DesktopFolder" Name="Desktop" />
</Directory>
<Feature Id="Complete" Level="1">
<ComponentRef Id="MainExecutable" />
<ComponentRef Id="HelperLibrary" />
<ComponentRef Id="Manual" />
<ComponentRef Id="ProgramMenuDir" />
</Feature>
<Icon Id="Foobar10.exe" SourceFile="FoobarAppl10.exe" />
</Product>
</Wix>