【发布时间】:2016-12-08 11:51:57
【问题描述】:
我正在开发一个 C# 应用程序。我有一个安装程序 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>
然后在 HKCU\SOFTWARE\MyCompagny\Product 中创建一个注册机并安装密钥。但是没有捷径。
我错过了什么?
编辑:
有日志:
MSI (s) (5C:B8) [14:51:31:801]:执行操作:ActionStart(Name=CreateShortcuts,Description=Creating shortcuts,Template=Shortcut: [1])
行动 14:51:31:创建快捷方式。创建快捷方式
MSI (s) (5C:B8) [14:51:31:802]:执行操作:IconCreate(Icon=icone.ico,Data=BinaryData)
CreateShortcuts:快捷方式:icone.ico
MSI (s) (5C:B8) [14:51:31:808]:执行操作:SetTargetFolder(Folder=23\MyCompagny)
MSI (s) (5C:B8) [14:51:31:810]:SHELL32::SHGetFolderPath 返回:C:\ProgramData\Microsoft\Windows\Start Menu\Programs
MSI (s) (5C:B8) [14:51:31:810]:执行操作:SetTargetFolder(Folder=25)
MSI (s) (5C:B8) [14:51:31:812]:SHELL32::SHGetFolderPath 返回:C:\Users\Public\Desktop
MSI (s) (5C:B8) [14:51:31:812]: 执行操作: ActionStart(Name=WriteRegistryValues,Description=Writing system registry values,Template=Key: [1], Name: [2 ],值:[3])
行动 14:51:31:WriteRegistryValues。写入系统注册表值
MSI (s) (5C:B8) [14:51:31:812]:执行操作:ProgressTotal(Total=2,Type=1,ByteEquivalent=13200)
MSI (s) (5C:B8) [14:51:31:813]:执行操作:RegOpenKey(Root=-2147483647,Key=SOFTWARE\MyCompagny\MyApplication,,BinaryType=0,,)
MSI (s) (5C:B8) [14:51:31:813]:执行操作:RegAddValue(Name=installed,Value=#1,)
WriteRegistryValues:键:\SOFTWARE\MyCompagny\MyApplication,名称:已安装,值:#1
MSI (s) (5C:B8) [14:51:31:813]:执行操作:RegAddValue(Name=installed,Value=#1,)
WriteRegistryValues:键:\SOFTWARE\MyCompagny\MyApplication,名称:已安装,值:#1
【问题讨论】:
-
可能是 Guid 的问题吗? (我不知道它是如何工作的)