我正在使用WixSharp组合安装程序。我想在Program Files \菜单中有一个快捷方式来打开一个网页。我可以用WixSharp做到吗?
答案 0 :(得分:0)
在可下载文件中查看< Wix#> \ Samples \ Shortcuts。
答案 1 :(得分:0)
使用Wix#XML注入功能将Internet快捷方式的WiX代码放入构建中。将此WiX语法示例用于Internet快捷方式:
<util:InternetShortcut Id="OnlineDocumentationShortcut"
Name="My Online Documentation"
Target="http://wixtoolset.org/"/>
在您的Wix#安装程序代码中,首先,在主代码中,您将向&#34; WixSourceGenerated&#34;添加处理程序。 event,在创建.wxs文件之后但在编译之前触发。该代码看起来像这样:
// Hook up a delegate to the "WixSourceGenerated" event, fires when .wxs file is fully created
Compiler.WixSourceGenerated += InjectXMLElement;
// Make sure the .wxs file gets preserved
Compiler.PreserveTempFiles = true;
// Trigger the MSI file build
Compiler.BuildMsi(project);
然后在你的委托方法中,你会得到类似这样的代码:
/// <summary>
/// Insert XML elements and attributes into the generated .wxs file
/// </summary>
/// <param name="document"></param>
static void InjectXMLElement(System.Xml.Linq.XDocument document)
{
// To add an Internet shortcut on target system, add this element:
// <util:InternetShortcut Id="OnlineDocumentationShortcut"
// Name="My Online Documentation"
// Target="http://wixtoolset.org/"/>
var componentElement = document.Root.Select("Product/Directory/Directory/Component");
componentElement.Add(new XElement("util:InternetShortcut",
new XAttribute("Id", "OnlineDocumentationShortcut"),
new XAttribute("Target", "http://wixtoolset.org/")));
}
您需要查看生成的.wxs文件,该文件与生成的MSI文件位于同一文件夹中,并找出XPath的内容,对于&#34; document.Root.Select()&# 34;到达要添加插入的WiX XML的节点。在我的wxs文件中,“开始菜单”快捷方式位于XML的一部分中,如下所示:
<Directory Id="ProgramMenuFolder" Name="ProgramMenuFolder">
<Directory Id="ProgramMenuFolder.My_App_Name" Name="My App Name">
<Component Id="My_App_Name.EmptyDirectory" Guid="18342da3-5a42-4397-b522-5927ace999">
<CreateFolder />
<RemoveFolder Id="ProgramMenuFolder.My_App_Name" On="uninstall" />
<RegistryKey Root="HKCU" Key="Software\WixSharp\Used">
<RegistryValue Value="0" Type="string" KeyPath="yes" />
</RegistryKey>
</Component>
</Directory>
因此,要在那里添加Internet快捷方式,您希望生成的XML看起来像这样:
<Directory Id="ProgramMenuFolder" Name="ProgramMenuFolder">
<Directory Id="ProgramMenuFolder.My_App_Name" Name="My App Name">
<Component Id="My_App_Name.EmptyDirectory" Guid="18342da3-5a42-4397-b522-5927ace999">
<CreateFolder />
<util:InternetShortcut Id="OnlineDocumentationShortcut"
Name="My Online Documentation"
Target="http://wixtoolset.org/"/>
<RemoveFolder Id="ProgramMenuFolder.My_App_Name" On="uninstall" />
<RegistryKey Root="HKCU" Key="Software\WixSharp\Used">
<RegistryValue Value="0" Type="string" KeyPath="yes" />
</RegistryKey>
</Component>
</Directory>
我认为它并不像我想象的那样困难或参与其中。只需要一些试验和错误就可以让XPath节点定位器指向正确的位置来插入XML。另外,我注意到Wix#XML语法似乎与WiX略有不同(并且在#34;快捷方式和#34;区域中不太完整)。 (例如,Wix#插入一个WiX没有的元素,而WiX允许您更清楚地指定快捷方式的起始文件夹和其他值)我使用的示例XML来自Wix#installer我添加了“开始”菜单快捷方式。如果您想为快捷方式执行更纯粹的WiX方法,并使用此方法将它们全部注入,请参阅以下WiX链接: http://wixtoolset.org/documentation/manual/v3/howtos/files_and_registry/create_start_menu_shortcut.html
用于快捷方式的纯WiX XML注入方法的优势在于可以让您更好地控制创建的内容。
在Wix#samples中,Samples \ InjectXML \ Setup.cs中有一个示例,它也显示了这种技术。
答案 2 :(得分:0)
在 WixSharp 中,您可以通过 InternetShortcut 类创建 InternetShortcut。
以下是我正在开发的应用的示例,该应用通过 df <- structure(list(sample_size = c(134L, 1586L, 588L, 345L, 2500L
), club = c("A", "B", "C", "B", "C"), bad = c(10L, 12L, 43L,
30L, 21L), below_avg = c(30L, 30L, 10L, 51L, 19L), neutral = c(45L,
24L, 17L, 10L, 30L), good = c(5L, 4L, 16L, 5L, 15L), very_good = c(10L,
30L, 14L, 4L, 15L)), class = "data.frame", row.names = c(NA,
-5L))
library(dplyr)
df %>%
group_by(club) %>%
summarise_all(., ~if(is.numeric(.)) sum(.)) %>%
rowwise() %>%
mutate(
total_percentage = sum(bad, neutral, good) / sum(bad, neutral, good, below_avg, very_good)
)%>%
select(club, sample_size, bad, neutral, good, total_percentage)
#> # A tibble: 3 x 6
#> # Rowwise:
#> club sample_size bad neutral good total_percentage
#> <chr> <int> <int> <int> <int> <dbl>
#> 1 A 134 10 45 5 0.6
#> 2 B 1931 42 34 9 0.425
#> 3 C 3088 64 47 31 0.71
类添加指向包含图标的网站的链接,并将该链接放置在桌面和开始菜单上。
InternetShortcut
另见: