2010-04-22 4 views
6

Wix를 사용하여 기존 폴더에 바탕 화면 바로 가기 (파일이 아님)를 만들어야합니다. 더 자세하게 설명하기 위해, 설치 프로그램에는 C#을 사용하여 작성된 CustomAction 프로그램이 있습니다. 이 CustomAction 프로그램은 사용자가 경로를 선택하는 "BSS"라는 폴더를 만듭니다.바탕 화면 만들기 WiX를 사용하여 기존 폴더의 바로 가기 만들기

C : \ 경우 ProgramData \ MT \ BSS

는 지금은 윅스를 사용하여이 폴더에 바탕 화면 바로 가기를 배치해야합니다. 그러나이 폴더는 WiX 내에 폴더 구조가 없으므로 문제가 발생합니다. 내가 찾을 수있는 가장 가까운 코드는 다음과 같다.

<Directory Id="DesktopFolder" Name="Desktop"/> 
    <Directory Id="CommonAppDataFolder" Name="ProgramDataFolder"/> 
    <Component Id="ComponentBSStrageShortcut" Guid="{8436995c-2e76-4030-b92d-c6b4bc243c43}"> 
    <Shortcut Id="ShortcutBSStrageShortcut" 
       Directory="DesktopFolder" 
       WorkingDirectory="APPLICATIONFOLDER" 
       Target="[CommonAppDataFolder]/MTK/BSStrage" 
       Name="BSStrage" 
       Show="normal"/> 
    <RegistryValue Action="write" 
        Key="SOFTWARE/MTK/BackStreet" 
        Root="HKCU" 
        Type="string" 
        KeyPath="yes" 
        Value="ApplicationFolderName"/> 
    </Component> 

이 방법으로 설치 프로그램을 빌드하면 실제로 바탕 화면에 바로 가기가 생성됩니다. 그러나 WiX는 BSStrage가 파일/응용 프로그램이라고 생각하여 C : \ ProgramData \ MT 위치에 BSStrage라는 가상 응용 프로그램의 바로 가기를 배치합니다. 그러나 그것을 열 수있는 프로그램이 없으므로 두 번 클릭하면 도움이되지 않습니다.

분명히 여기서 잘못하고 있습니다. 누군가이 문제를 극복하는 방법으로 이것을 도와주세요. 나는 윅스에게 매우 새로운 점을 알았으며 (단지 2 일 밖에 걸리지 않았다.) 이전에는 한번도 작업 해본 적이 없다. 모든 코드 샘플은 큰 도움이 될 것입니다.

+0

이것은 자연스러운 추측이지만 대상 폴더 경로에 후행 슬래시를 추가하려 했습니까? –

답변

2

바로 가기/@ 대상의 슬래시는 백 슬래시이어야합니다. Explorer는 아마 당신의 지름길을 "Switches/MTK와/BSStrage를 가진 CommonAppDataFolder 시작"으로 해석 할 것입니다. 적어도 그것은 내 첫 번째 추측입니다.

1

내 요구 사항이 조금 바뀌었고 다음과 같이 작동하도록 코드가 있습니다. 이제 ProgramData 폴더에 대한 바로 가기를 만듭니다.

<!-- Desktop Shortcut --> 
    <Directory Id="DesktopFolder" Name="Desktop"/> 
    <Directory Id="CommonAppDataFolder" Name="ProgramDataFolder"/> 
    <Component Id="MTDesktopShortcut" Guid="{8436995c-2e76-4030-b92d-c6b4bc243c43}"> 
    <Shortcut Id="MTShortcut" 
       Directory="DesktopFolder" 
       WorkingDirectory="APPLICATIONFOLDER" 
       Target="[CommonAppDataFolder]" 
       Name="MT" 
       Show="normal"/> 
    <RegistryValue Action="write" 
        Key="SOFTWARE/MT/BS" 
        Root="HKCU" 
        Type="string" 
        KeyPath="yes" 
        Value="ApplicationFolderName"/> 
    </Component> 

잘 작동하고 바로 가기를 만듭니다. 그러나 현재 사용자의 바탕 화면에서 AllUsers 바탕 화면에 바로 가기를 만드는 동안 바로 가기를 생성하므로 한 가지 문제가 있습니다. 내가 어떤 변화를해야합니까?

또한 내 설치 관리자는 모든 사용자 설치를 수행하며 변경을 자유롭게 할 수는 없습니다. 설치 프로그램이 여전히 모든 사용자 설치를 수행 할 수있는 동안 현재 사용자의 바탕 화면에서이 바로 가기를 만드는 방법이 필요합니다.

3

방금 ​​같은 문제가 발생했습니다.
Target="[CommonAppDataFolder]" 잘 작동 형태의 Target 속성을 가진 Shortcut 태그를 생성하지만, 노력하는 것은 작동하지 않는 바로 가기의 생성에 하위 디렉토리를 같은
Target="[CommonAppDataFolder]\MTK\BSStrage" 결과를 추가 할 것으로 보인다.

다행히도 해결책을 발견했습니다. 대상 디렉토리가 가지고있는

<Directory Id="DesktopFolder" Name="Desktop"/> 
<Directory Id="CommonAppDataFolder" Name="ProgramDataFolder"> 
    <Directory Id="AppDataMTK" Name="MTK"> 
    <Directory Id="AppDataBSStrage" Name="BSStrage"> 
     <Component Id="ComponentBSStrageShortcut" Guid="{8436995c-2e76-4030-b92d-c6b4bc243c43}"> 
     <CreateFolder/> 
     <Shortcut Id="ShortcutBSStrageShortcut" 
        Directory="DesktopFolder" 
        Name="BSStrage""/> 
     </Component> 
    </Directory> 
    </Directory> 
</Directory> 

참고 : 트릭은 당신이 그 다음, Shortcut 태그를 포함하는 Component 태그가 포함하므로 같은 바로 가기를 만들 디렉토리에 이르는 Directory 태그의 계층 구조를 만드는 것입니다 바로 가기가 생성 된 시점에 실제로 존재해야합니다. 그렇지 않으면 똑같은 문제가 발생할 것입니다. 바로 가기가 끊어집니다. 이 때문에 <CreateFolder/> 태그를 Component 태그 안에 추가하여 설치시 디렉토리를 만듭니다.

관련 문제