2010-01-05 2 views
9

내 바로 가기를 시작 메뉴 바로 가기의 기존 폴더에 추가하려고합니다. 내가하려고하면 다음과 같은 오류를 얻을 수Wix 설치 프로그램을 사용하여 시작 메뉴 프로그램의 하위 폴더에 바로 가기 추가

<Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder" Name="Program Files"> 
      <Directory Id="CompanyName" Name="CompanyName"> 
       <Directory Id="App" Name="App"> 
        <Directory Id="INSTALLDIR" Name="App 6.3.0"> 
         <Component Id="MainExecutable" Guid="23FFE6FD-2BEA-4946-9875-8DBEEA5AAF55"> 
          <File Id="AppEXE" Name="App.exe" Source="App.exe" KeyPath="yes"> 
           <Shortcut Id="startmenu" Directory="ProgramMenuDir" Name="App 6.3.0" WorkingDirectory='INSTALLDIR' Icon="App.exe" IconIndex="0" Advertise="yes" /> 
           <Shortcut Id="desktopApp" Directory="DesktopFolder" Name="App 6.3.0" WorkingDirectory='INSTALLDIR' Icon="App.exe" IconIndex="0" Advertise="yes" /> 
          </File> 
         </Component> 
        </Directory> 
       </Directory> 
      </Directory> 
     </Directory> 
     <Directory Id="ProgramMenuFolder" Name="Programs"> 
      <Directory Id="ProgramMenuFolderApp" Name="App"> 
       <Directory Id="ProgramMenuDir" Name="App6.3.0"> 
        <Component Id="ProgramMenuDir" Guid="BF266F76-192A-493E-B5C7-C54660E61D7D"> 
         <RemoveFolder Id="ProgramMenuDir" On="uninstall" /> 
         <RegistryValue Root="HKCU" Key="Software\CompanyName\App6.3.0" Type="string" Value="" KeyPath="yes" /> 
        </Component> 
       </Directory> 
      </Directory>    
     </Directory> 
     <Directory Id="DesktopFolder" Name="Desktop" /> 
    </Directory> 

: 내 .wxs 파일에 다음 코드를

  <Directory Id="ProgramMenuFolderApp" Name="App"> 
       <Directory Id="ProgramMenuDir" Name="APP 6.3.0"> 

예를 들어 All Programs -> AppNameFolder -> AppNameVersionFolder -> AppShortcut

는이를 위해 나는 여분의 라인을 추가 빌드 :

The directory ProgramMenuFolderApp is in the user profile but is not listed in the RemoveFile table.

그러나 제거 할 때 더 높은 수준의 폴더를 제거하지 않으려는 경우에만 App 6.3.0 폴더와 그 아래를 제거하고 싶습니다.

시작 메뉴의 프로그램 하위 폴더에 바로 가기를 추가하려면 어떻게해야합니까?

답변

9

메시지가 ICE64에서 오는 경우 경고입니다. ICE 경고는 이해되어야하며 무시할만한 경우 무시해야합니다. 새로운 디렉토리가 에 사용자 프로필이 시나리오 로밍 올바르게 을 제거

ICE64 검사 : http://msdn.microsoft.com/en-us/library/aa369011(VS.85).aspx이 말을한다.

ICE64에서보고 한 경고 또는 오류를 수정하지 못하면 일반적으로 컴퓨터를 완전히 제거 할 때 컴퓨터를 완전히 청소할 때 문제가 발생합니다 (예 : ). 응용 프로그램을 설치 한 로밍 사용자가 처음 컴퓨터 에 로그온하면 모든 프로필 이 컴퓨터에 복사됩니다. 알림 ( 로밍 프로필 다운로드 후 발생) 설치 관리자는 디렉터리가 이미 있는지 확인하므로 제거시 해당 파일을 삭제하지 않습니다. 이 은 사용자의 컴퓨터에있는 디렉토리를 영구적으로 유지합니다.

시작 메뉴에 빈 "App"디렉토리를 남기고 싶은 이유는 분명하지 않습니다. ICE 문제를 해결하는 것이 가장 쉽습니다. 이렇게하려면 ProgramMenuDir 구성 요소에 다른 RemoveFolder 요소를 추가하기 만하면됩니다.

+0

좋아요! 나는 light.exe와의 링크가 오류를 보여주고 있었지만 여전히 MSI를 생성하고 있다는 것을 깨닫지 못했습니다. "응용 프로그램"디렉토리는 비어 있지 않으며 동일한 응용 프로그램이지만 다른 버전의 다른 폴더를 갖습니다. – Seth

+0

방금''을 ProgramMenuDir' 구성 요소에 추가했는데 여전히 오류가 발생합니다. – Seth

+0

@Seth, 그럼 당신은 여전히 ​​ProgramMenuDir 구성 요소에 RemoveFolder를 추가 한 후 오류가있어, 응? RemoveFolder는 디렉토리와 동일한 레벨이 아니라 제거해야하는 디렉토리 안에 있어야한다고 생각합니다. 또한 두 번째 RemoveFolder에 RegistryValue를 추가 했습니까? –

관련 문제