Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Installshield 2009多个串行密钥_C#_Installshield_Installshield 2009 - Fatal编程技术网

C# Installshield 2009多个串行密钥

C# Installshield 2009多个串行密钥,c#,installshield,installshield-2009,C#,Installshield,Installshield 2009,我一直在使用Installshield 2009和C来创建一个安装项目,该项目在安装之前验证一个串行密钥,即在.NET中编写的算法。它工作得很好 然而,我有几个版本的产品。目前,我为每个版本使用单独的安装项目。但是,许多文件都是相同的,只是包含或不包含文件的变化很小。如果我能有一个单独的部署项目,根据检测到的有效串行密钥安装某些文件,我会很高兴 基本上,我想知道Installshield是否可以实现这种功能 提前感谢Windows Installer不太适合您描述的场景,至少除非您花时间使用某种

我一直在使用Installshield 2009和C来创建一个安装项目,该项目在安装之前验证一个串行密钥,即在.NET中编写的算法。它工作得很好

然而,我有几个版本的产品。目前,我为每个版本使用单独的安装项目。但是,许多文件都是相同的,只是包含或不包含文件的变化很小。如果我能有一个单独的部署项目,根据检测到的有效串行密钥安装某些文件,我会很高兴

基本上,我想知道Installshield是否可以实现这种功能


提前感谢

Windows Installer不太适合您描述的场景,至少除非您花时间使用某种许可技术来防止使用未正确安装的文件。您可以让您的串行验证dll也设置一个属性,各种功能或组件的条件关闭,但一个转换可以很容易地回避这一点。除非您已经或可以花时间实施许可证验证,否则最好的办法是为每个不同的允许文件集维护单独的版本。但是,您可以将这些合并到单个项目中

根据构建之间的差异,我认为有两种互补的方法可以获得单独的SKU。第一个版本最容易在每个版本的基础上指定,您可以选择要构建的版本,例如从命令行。第二个版本与版本无关,可以手动更新,也可以在命令行生成中重写

释放标志

您可以将项目组分离为额外的功能(可能是隐藏的),这样它们就不会使功能选择对话框混乱,然后在每个版本上使用发布标志在生成时包括或排除这些文件。如果您正在更改内容文件,但在不同的SKU中继续使用相同的自定义操作DLL,那么这可能是最有效的

路径变量

可以使用path变量指定自定义操作DLL的路径,然后可以使用该变量覆盖文件的源位置。确保文件或二进制表中的相应条目在尖括号中使用自己的变量,然后您也可以在构建时单独交换它。如果需要更改自定义操作DLL,这是有意义的,并且可以与发布标志一起使用


您可以在运行时添加和删除功能。这可以通过install shield脚本中的installer properties或b来完成

首先,将所有版本的所有功能添加到项目中。您将确保未选择安装它们。然后在运行时使用方法a或方法b选择一个

可以通过多种方式设置安装程序属性。命令行切换到安装程序、操作系统版本、存在的某些注册表项或通过DLL中的自定义逻辑。根据安装程序属性的特定值,可以包括/排除功能

对于b,脚本可以访问功能树,并可以使用FeatureSelectItem等基于自定义逻辑选择和取消选择它们