6

Wix を使用して、既存のフォルダー (ファイルではなく) へのデスクトップ ショートカットを作成する必要があります。さらに詳しく説明すると、私のインストーラー プログラムには、C# を使用して記述された CustomAction プログラムが関連付けられています。この CustomAction プログラムは、パスがユーザーによって選択される「BSS」という名前のフォルダーを作成します。

C:\ProgramData\MT\BSS

ここで、WiX を使用して、このフォルダーへのデスクトップ ショートカットを配置する必要があります。ただし、このフォルダーには 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 をファイル/アプリケーションと見なしているように見えるため、BSStrage という架空のアプリケーションへのショートカットを C:\ProgramData\MT に配置します。しかし、それを開くために使用できるプログラムがないため、それをダブルクリックしても役に立ちません。

明らかに私はここでそれを間違っています。この問題を克服する方法として、誰かがこれを手伝ってくれませんか。私は Wix に非常に慣れておらず (まだ 2 日しか経っていません)、これまで一度も使用したことがありません。どのコード サンプルも非常に役立ちます。

4

3 に答える 3

3

同じ問題に遭遇しました。フォームの属性を持つShortcutタグを作成するとうまくいくようですが、 などのサブディレクトリを追加しようとすると、機能しないショートカットが作成されます。Target
Target="[CommonAppDataFolder]"
Target="[CommonAppDataFolder]\MTK\BSStrage"

幸いなことに、私は解決策を発見しました。Directory秘訣は、ショートカットを作成したいディレクトリにつながるタグの階層を作成することです。このディレクトリには、次のようにComponentタグを含むタグが含まれます。Shortcut

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

ショートカットが作成された時点でターゲット ディレクトリが実際に存在している必要があることに注意してください。これが、インストール時にディレクトリを作成するために、<CreateFolder/>タグ内にタグを追加した理由です。Component

于 2012-08-14T14:18:52.833 に答える
2

ショートカット/@ターゲットのスラッシュは円記号である必要があります。Explorerは、ショートカットを「スイッチ/MTKおよび/BSStrageを使用してCommonAppDataFolderを起動する」と解釈している可能性があります。少なくとも、それが私の最初の推測です。

于 2010-05-01T22:50:06.933 に答える
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デスクトップにショートカットが作成されるため、1つの問題があります。どうすればいいですか?

また、私のインストーラーはすべてのユーザーによるインストールを実行しますが、それを自由に変更することはできません。インストーラーがすべてのユーザーのインストールを実行できる間に、現在のユーザーのデスクトップにこのショートカットを作成する方法が必要なだけです。

于 2010-05-13T07:21:25.887 に答える