Wix# 使用 C# 在公共启动文件夹中创建快捷方式而不是 XML
Wix# create shortcut in common startup folder using C# not XML
我正在尝试在公共启动文件夹中创建快捷方式,因此当任何用户登录我的应用程序时 运行。我正在使用 nuget 包 WinSharp 版本 1.0.36.2 创建 MSI 安装程序。
下面是我的 WinSharp 项目的 Main。思路是将app安装到program files,在启动文件夹中创建快捷方式(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
您可以使用 %ProgramMenu\Startup%
作为启动文件夹位置
//This will create three shortcuts
project.FindFile(f => f.Name.EndsWith("myapp.exe"))
.First()
.Shortcuts = new[]{
new FileShortcut("myapp", "INSTALLDIR"),
new FileShortcut("myapp","%Desktop%"),
new FileShortcut("myapp","%Startup%")
};
接受的答案对我不起作用,它导致了错误 ICE38: Component installs to user profile
。
对我有用的是使用注册表:
new RegValue(RegistryHive.LocalMachine,
@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
"MyApplication",
@"[INSTALLDIR]MyFolder\MyApp.exe"),
None 这些对我有用,但这确实:
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".
我正在尝试在公共启动文件夹中创建快捷方式,因此当任何用户登录我的应用程序时 运行。我正在使用 nuget 包 WinSharp 版本 1.0.36.2 创建 MSI 安装程序。
下面是我的 WinSharp 项目的 Main。思路是将app安装到program files,在启动文件夹中创建快捷方式(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
您可以使用 %ProgramMenu\Startup%
作为启动文件夹位置
//This will create three shortcuts
project.FindFile(f => f.Name.EndsWith("myapp.exe"))
.First()
.Shortcuts = new[]{
new FileShortcut("myapp", "INSTALLDIR"),
new FileShortcut("myapp","%Desktop%"),
new FileShortcut("myapp","%Startup%")
};
接受的答案对我不起作用,它导致了错误 ICE38: Component installs to user profile
。
对我有用的是使用注册表:
new RegValue(RegistryHive.LocalMachine,
@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
"MyApplication",
@"[INSTALLDIR]MyFolder\MyApp.exe"),
None 这些对我有用,但这确实:
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".