2010-01-05 27 views
9

Tôi đang cố gắng thêm lối tắt chương trình của mình vào một thư mục hiện có trong các phím tắt của menu bắt đầu. Ví dụ All Programs -> AppNameFolder -> AppNameVersionFolder -> AppShortcutSử dụng trình cài đặt Wix để thêm lối tắt vào thư mục con trong các chương trình startmenu

Để đạt được điều này tôi đã thêm các dòng thêm:

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

để đoạn mã sau vào .wxs tập tin của tôi:

<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> 

tôi nhận được lỗi sau khi tôi cố gắng và xây dựng:

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

Tuy nhiên, tôi không muốn xóa thư mục cấp cao hơn khi tôi gỡ cài đặt, tôi chỉ muốn xóa thư mục Ứng dụng 6.3.0 trở xuống.

Làm cách nào để thêm lối tắt vào thư mục con của chương trình trong menu bắt đầu?

Trả lời

9

Nếu thư đó đến từ ICE64 thì đó là cảnh báo. Cảnh báo ICE nên được hiểu và nếu được chấp nhận bị bỏ qua. http://msdn.microsoft.com/en-us/library/aa369011(VS.85).aspx có này để nói: séc

ICE64 rằng thư mục mới trong hồ sơ người dùng được loại bỏ một cách chính xác trong roaming kịch bản.

Không sửa được cảnh báo hoặc lỗi được báo cáo bởi ICE64 thường dẫn đến sự cố khi hoàn toàn làm sạch máy tính trong khi gỡ cài đặt. Khi người dùng chuyển vùng đã cài đặt ứng dụng đăng nhập vào máy tính lần đầu tiên, tất cả cấu hình sẽ được sao chép vào máy tính. Trên quảng cáo (diễn ra sau tải xuống hồ sơ chuyển vùng), Trình cài đặt xác minh rằng thư mục đã có và do đó không xóa nó khi gỡ cài đặt. Điều này để lại thư mục trên máy tính của người dùng vĩnh viễn.

Không rõ tại sao bạn muốn để trống thư mục "Ứng dụng" trong Menu Bắt đầu. Có vẻ như giải quyết vấn đề ICE là dễ nhất. Để làm như vậy, chỉ cần thêm một phần tử RemoveFolder khác vào thành phần ProgramMenuDir của bạn.

+0

Tuyệt vời! Tôi đã không nhận ra rằng mặc dù các liên kết với light.exe đã được hiển thị một lỗi nó vẫn còn tạo ra một MSI. Thư mục "Ứng dụng" sẽ không trống, nó sẽ có các thư mục khác cho cùng một ứng dụng nhưng các phiên bản khác nhau. – Seth

+0

Tôi vừa thêm '' vào thành phần 'ProgramMenuDir' và tôi vẫn gặp lỗi. – Seth

+0

@Seth, Vì vậy, bạn vẫn gặp lỗi sau khi thêm RemoveFolder vào thành phần ProgramMenuDir, huh? Tôi nghĩ rằng RemoveFolder nên ở bên trong thư mục mà nó loại bỏ, không phải ở cùng mức với nó. Ngoài ra, bạn đã thêm một RegistryValue cho RemoveFolder thứ hai? –

Các vấn đề liên quan