C# 安装应用程序C时的注册表更改#
这是我第一次尝试用VisualStudio为应用程序制作安装包。我有一个注册表值,需要在安装程序时更改。我需要在每次计算机启动时启动该程序 这是一项相当琐碎的任务吗?有没有人能给我指点方向,让我试着实现这一目标C# 安装应用程序C时的注册表更改#,c#,registry,installation,C#,Registry,Installation,这是我第一次尝试用VisualStudio为应用程序制作安装包。我有一个注册表值,需要在安装程序时更改。我需要在每次计算机启动时启动该程序 这是一项相当琐碎的任务吗?有没有人能给我指点方向,让我试着实现这一目标 到目前为止,我只使用了带有表单等的应用程序。我也有同样的问题,我正在使用并遵循Stackoverflow问题的答案。我也是WIX新手,如果您感兴趣,这里是我的完整WIX工作脚本(在Windows XP和Windows 8.1上测试): 这取决于用于创建安装包的工具,通常需要在下面添加字符
到目前为止,我只使用了带有表单等的应用程序。我也有同样的问题,我正在使用并遵循Stackoverflow问题的答案。我也是WIX新手,如果您感兴趣,这里是我的完整WIX工作脚本(在Windows XP和Windows 8.1上测试):
这取决于用于创建安装包的工具,通常需要在下面添加字符串值 HKEY\ U当前\用户\软件\ Microsoft\Windows\CurrentVersion\Run或 HKEY\U本地\U计算机\Software\Microsoft\Windows\CurrentVersion\Run 如“AppName”:“AppPath”
您也可以通过在代码中添加regstry来实现这一点。您使用的是Visual studio安装程序包吗?我从未使用过程序,但如果这是正常的方法,那么我将使用它。是的。我想我可能运行得有点太超前了。也许我需要先走一步,看看自己进展如何我不确定我在处理什么。谢谢@Adiono,我将尝试一下,我想这会让我更多地了解Product.wxs文件中的内容。我在第节中遇到一个错误。从你的代码中我真的不明白这一点。当我将其命名为NameOfMyApp并替换FooFileLib和var.MyAppName.Lib时,它会生成一个错误“未定义的预处理器变量。我最终删除了Lib位,我认为我没有主Lib文件。欢迎@Jagga。节取决于您要放置的项目(参考)在安装程序中。在我的应用程序中,我有两个项目引用到wix安装程序项目,它们是作为主应用程序的Foo(windows窗体应用程序)和作为主应用程序的Foo.Lib(类库)。
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*"
Name="FooSetup" Language="1033"
Version="1.0.1.1"
Manufacturer="Foo Enterprise"
UpgradeCode="9235c293-2f08-4c2b-b7a5-69d01f5fca32">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate EmbedCab="yes" />
<!-- Step 1: Define the directory structure -->
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="FooSetup" />
</Directory>
<Directory Id="ProgramMenuFolder">
<Directory Id="ApplicationProgramsFolder" Name="Foo Application"/>
</Directory>
<Directory Id="DesktopFolder" Name="Desktop" />
</Directory>
<!-- Step 2: Add files to your installer package & add autostart feature -->
<DirectoryRef Id="INSTALLFOLDER">
<!-- The main executable file-->
<Component Id="FooApplication" Guid="3F122E60-3745-4AEB-ADA3-B90DCB87E0BD">
<File Id="FooMainApp" Source="$(var.Foo.TargetPath)" KeyPath="yes"/>
</Component>
<!-- The main lib file-->
<Component Id="FooLib" Guid="83BEDB02-C9F5-4A06-B3D5-0A4D61D6A99C">
<File Id="FooFileLib" Source="$(var.Foo.Lib.TargetPath)" KeyPath="yes"/>
</Component>
<!-- Register windows autostart registry -->
<Component Id="RegistryEntries" Guid="45C7AC46-1101-4301-83E1-D24392283A60">
<RegistryValue Type="string"
Name="FooStartup"
Value="[#FooMainApp]"
Root="HKLM"
Key="Software\Microsoft\Windows\CurrentVersion\Run"
Action="write"/>
</Component>
</DirectoryRef>
<!-- Step 3: Add the shortcut to your installer package -->
<!-- Start Menu -->
<DirectoryRef Id="ApplicationProgramsFolder">
<Component Id="FooShortcutMenu" Guid="3874D005-4E1C-4C0E-9CEA-8CD8D5442B60">
<Shortcut Id="FooApplicationStartMenuShortcut"
Name="Foo Application"
Description="The Foo is Cool!"
Target="[#FooMainApp]"
WorkingDirectory="INSTALLFOLDER"/>
<RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/>
<RegistryValue Root="HKCU" Key="Software\Microsoft\FooApplication" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component>
</DirectoryRef>
<!-- Desktop Menu -->
<DirectoryRef Id="DesktopFolder">
<Component Id="FooDesktopShortcutMenu" Guid="D4D0A2ED-C0DB-4524-AC53-D30F904DB846">
<Shortcut Id="FooApplicationDesktopShortcut"
Name="Foo Application"
Description="The Foo is Cool!"
Target="[#FooMainApp]"
WorkingDirectory="INSTALLFOLDER"
Directory="DesktopFolder"/>
<RemoveFolder Id="DesktopFolder" On="uninstall"/>
<RegistryValue Root="HKCU" Key="Software\Microsoft\FooApplication" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component>
</DirectoryRef>
<!-- Tell Wix -->
<Feature Id="ProductFeature" Title="FooSetup" Level="1">
<ComponentRef Id="FooApplication" />
<ComponentRef Id="FooLib" />
<ComponentRef Id="FooShortcutMenu"/>
<ComponentRef Id="FooDesktopShortcutMenu"/>
<ComponentRef Id="RegistryEntries" />
</Feature>
</Product>
</Wix>