C# 安装程序-VS 2015中的安装项目

C# 安装程序-VS 2015中的安装项目,c#,installation,windows-installer,C#,Installation,Windows Installer,我正在VS2015中开发一个窗口应用程序(例如计算器)。我已为此应用程序创建了一个安装文件,该文件将在PC中安装该应用程序。我们是否可以在安装项目中编写代码(例如添加新的.cs文件或类似文件),因为我正在尝试创建特定于每台PC的我自己的产品密钥(自定义密钥)?此外,该代码应该在第一次在桌面上安装产品时运行,并向用户请求产品密钥。一旦安装了窗口应用程序,主项目(计算器,而不是安装项目)中编写的任何代码都应该只执行 如果有人可以建议其他方式,使应用程序只在安装期间要求定制产品。应用程序,首次启动:许

我正在VS2015中开发一个窗口应用程序(例如计算器)。我已为此应用程序创建了一个安装文件,该文件将在PC中安装该应用程序。我们是否可以在安装项目中编写代码(例如添加新的.cs文件或类似文件),因为我正在尝试创建特定于每台PC的我自己的产品密钥(自定义密钥)?此外,该代码应该在第一次在桌面上安装产品时运行,并向用户请求产品密钥。一旦安装了窗口应用程序,主项目(计算器,而不是安装项目)中编写的任何代码都应该只执行

如果有人可以建议其他方式,使应用程序只在安装期间要求定制产品。

应用程序,首次启动:许多部署人员倾向于建议在首次启动时将许可证放在应用程序本身。原因有很多,下面是一个尝试性的解释:

自定义操作:自定义操作用于在MSI设置中执行不寻常或专有的操作。由于MSI的总体复杂性和(第
节“部署的复杂性”
)的原因,定制操作很难正确和可靠。基本上,自定义操作是复杂的,
排序-
调节-
模拟问题
,总体
可调试性差

底线:当您在应用程序启动代码中实现逻辑时,您处于熟悉的领域,没有需要处理的模拟或调试困难。更容易开发。更容易调试和维护

每用户授权:挑战在于您的应用程序必须写入HKCU或用户配置文件-除非它使用管理员权限运行。我更喜欢按用户进行许可,这可能会允许许可与用户一起漫游。或者使用在线许可方法,通过网络设置一次许可。例如,通过应用程序的登录方法。您登录到在线服务,所有许可都是其中的一部分

注意:可以对HKLM应用ACL更改,允许非提升应用程序向HKLM写入许可证密钥。可能,不是建议。

应用程序,首次发布:许多部署人员倾向于建议在首次发布时将许可证放入应用程序本身。原因有很多,下面是一个尝试性的解释:

自定义操作:自定义操作用于在MSI设置中执行不寻常或专有的操作。由于MSI的总体复杂性和(第
节“部署的复杂性”
)的原因,定制操作很难正确和可靠。基本上,自定义操作是复杂的,
排序-
调节-
模拟问题
,总体
可调试性差

底线:当您在应用程序启动代码中实现逻辑时,您处于熟悉的领域,没有需要处理的模拟或调试困难。更容易开发。更容易调试和维护

每用户授权:挑战在于您的应用程序必须写入HKCU或用户配置文件-除非它使用管理员权限运行。我更喜欢按用户进行许可,这可能会允许许可与用户一起漫游。或者使用在线许可方法,通过网络设置一次许可。例如,通过应用程序的登录方法。您登录到在线服务,所有许可都是其中的一部分

注意:可以对HKLM应用ACL更改,允许非提升应用程序向HKLM写入许可证密钥。可能,不是建议