2016-12-08 12 views
0

私はC#アプリケーションを開発中です。私はインストーラWixを持っていて、自分のアプリケーションのためのショートカットを作成したい。いくつかの調査の後、私はデスクトップとスタートメニューのショートカットを作成するコードを発見した。レジスタは、インストールキーをHKCU \ SOFTWARE \ MyCompagny \製品で作成された後Wixショートカットを作成できません

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramMenuFolder"> 
    <Directory Id="ApplicationProgramsFolder" Name="$(var.compagny)"/> 
    </Directory> 
    <Directory Id="DesktopFolder" SourceName="Desktop"/> 
</Directory> 

<!-- Shortcuts --> 
<DirectoryRef Id="ApplicationProgramsFolder"> 
    <Component Id="ApplicationShortcut" Guid="*"> 
    <Shortcut Id="ApplicationStartMenuShortcut" 
       Name="$(var.product)" 
       Description="$(var.product) application" 
       Target="MyApplication.exe" 
       WorkingDirectory="INSTALLFOLDER"/> 
    <RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/> 
    <RegistryKey Root="HKCU" Key="SOFTWARE\$(var.compagny)\$(var.product)"> 
     <RegistryValue Name="installed" Type="integer" Value="1" KeyPath="yes" /> 
    </RegistryKey> 
    </Component> 
</DirectoryRef> 
<DirectoryRef Id="DesktopFolder"> 
    <Component Id="ApplicationShortcutDesk" Guid="*"> 
    <Shortcut Id="ApplicationStartDeskShortcut" 
       Name="$(var.product)" 
       Description="$(var.product) application" 
       Target="MyApplication.exe" 
       WorkingDirectory="INSTALLFOLDER"/> 
    <RemoveFolder Id="DesktopFolder" On="uninstall"/> 
    <RegistryKey Root="HKCU" Key="SOFTWARE\$(var.compagny)\$(var.product)"> 
     <RegistryValue Name="installed" Type="integer" Value="1" KeyPath="yes"/> 
    </RegistryKey> 
    </Component> 
</DirectoryRef> 

<Feature Id="ProductFeature" Title="$(var.product)" Level="1"> 
    <ComponentRef Id="ApplicationShortcut"/> 
    <ComponentRef Id="ApplicationShortcutDesk"/> 
</Feature> 

は私のコードがあります。しかし、ショートカットはありません。

私は何を欠席しましたか?

編集:

ログがあります

MSI(S)(5C:B8)[14:51:31:801]:実行OP:ActionStart(NAME = CreateShortcuts、説明=ショートカットの作成、テンプレート=ショートカット:[1])

アクション14:51:31:CreateShortcuts。作成ショートカット

MSI(S)(5C:B8)[14:51:31:802]:実行OP:IconCreate(アイコン= icone.ico、データ= BinaryData)

CreateShortcuts:ショートカット:イコーン。 ICO

MSI(S)(5C:B8)[14:51:31:808]:OP実行:SetTargetFolderを(フォルダ= 23 \ MyCompagny)

MSI(S)(5C:B8)[14 :51:31:810]:SHELL32 :: SHGetFolderPathが返されました。C:\ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs

MSI(5C:B8)[14:51:31:810]実行中OP:SetTargetFolder(フォルダ= 25)

MSI(S)(5C:B8)[14:51:31:812]:SHELL32 :: SHGetFolderPathが返さ:C:\ユーザー\パブリック\デスクトップ

MSI実行中:ActionStart(Name = WriteRegistryValues、Description =システムレジストリ値の記述、Template = Key:[1]、Name:[2]、Value: [3])

アクション14:51:31:WriteRegistryValues。書き込みシステムレジストリ値

MSI(S)(5C:B8)[14:51:31:812]:実行OP:ProgressTotal(合計= 2、タイプ= 1、ByteEquivalent = 13200)

MSI( S)(5C:B8)[14:51:31:813]:実行OP:RegOpenKey(ルート= -2147483647、キー= SOFTWARE \ MyCompagny \ MyApplicationを,, BinaryType = 0 ,,)

MSI(S) (名前=インストール済み、値=#1)

WriteRegistryValues:キー:¥SOFTWARE¥MyCompagny¥MyApplication、Name:installed、Value(5C:B8)[14:51:31:813] :#1

MSI(S)(5C:B8)[14:51:31:813]:実行OP:RegAddValue(NAME =インストールされ、値=#1)

WriteRegistryValuesキー:\ SOFTWARE \ MyCompagny \ MyApplicationを名前:インストールされ、値:#1

+0

Guidに問題がありますか? (私はそれがどのように動作するのかわかりません) –

答えて

0

あなたのショートカットコンポーネントがあなたの特集リストで参照されていることを確認する必要があります。ここに例があります:

<Feature Id="ProductFeature" Title="ProductTitle" Level="1"> 
    <ComponentRef Id='ApplicationShortcutDesk' /> 
</Feature> 

+0

私の質問にこの部分を挿入するのを忘れましたが、私はそれを行いました。それはとにかく動作しません。私はこれについてたくさんの話題を読んでおり、私が間違っていることは分かりません。 –

1

DesktopFolderプロパティを不適切に使用しました。

は私がを考えるあなたのショートカットは、あなたが今、あなたが[TARGETDIR]\[DesktopFolder]でショートカットを入れている「デスクトップ」への言及はまあ定義されたプロパティ「DesktopFolderを」と改名ためですC:\Desktop\

に起こっている上記のような通常ますあなたは、Tに

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="ProgramMenuFolder"> 
    <Directory Id="ApplicationProgramsFolder" Name="$(var.compagny)"/> 
    </Directory> 
    <Directory Id="DesktopFolder"/> 
</Directory> 

予告なしName=""を使用したいC:\Desktop\

こと彼DesktopFolder。

また、あなたは間違いなくApplicationShortcutDeskコンポーネントから

<RemoveFolder Id="DesktopFolder" On="uninstall"/> 

を削除する必要があり、私は今まで自分が所有してインストールして作成している知っているフォルダにRemoveFolderを使用すると言うでしょう。

+0

あなたの答えと私の両方のターゲットを 'Target =" [#MyApplication.exe] "で置き換えると、それは動作します。ありがとうございました –

関連する問題