我正在尝试在公共(public)启动文件夹中创建一个快捷方式,以便在任何用户登录我的应用程序时运行。我正在使用 nuget 包 WinSharp 版本 1.0.36.2 创建 MSI 安装程序。
下面是我的 WinSharp 项目的 Main。这个想法是将应用程序安装到程序文件并在启动文件夹(C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp)中创建一个快捷方式。在桌面上创建快捷方式的注释行工作正常。构建当前版本给出错误:
Error ICE38: Component StartupFolder.EmptyDirectory installs to user profile. It must use a registry key under HKCU as its KeyPath, not a file.
是否有像 Desktop 这样的不同目录 ID 可用于启动文件夹?
var project = new ManagedProject("Plate Synthesis Listener Setup",
new Dir(@"%ProgramFiles%\myCompany/myApp",
new File(@"..\myApp\bin\Debug\myApp.exe")
{
//Shortcuts = new[] {new FileShortcut("myApp", "%Desktop%")}
Shortcuts = new[] {new FileShortcut("myApp", "StartupFolder")}
},
new Files(@"..\myApp\bin\Debug\*.dll"),
new File(@"..\myApp\bin\Debug\myApp.exe.config")
{
GUID = new Guid("My new GUID"),
ManagedUI = ManagedUI.Empty,
Version = new Version(1, 0, 1)
};
project.ManagedUI.InstallDialogs.Add(Dialogs.Welcome)
.Add(Dialogs.Progress)
.Add(Dialogs.Exit);
project.BuildMsi();
我见过的其他线程是针对 XML 而不是 C# 的:
Wix create shortcut in user startup folder
How to : Making a program start on Windows startup with wix toolset?
最佳答案
这些都不适合我,但这个确实:
project.ResolveWildCards().FindFile(f => f.Name.EndsWith("My.exe")).First()
.Shortcuts = new[]{
new FileShortcut("Shortcut name", @"%AppData%\Microsoft\Windows\Start Menu\Programs")
};
主要区别在于使用@"%AppData%\Microsoft\Windows\Start Menu\Programs"。
关于c# - Wix# 使用 C# 而不是 XML 在公共(public)启动文件夹中创建快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37616983/