让我解释一下我的情况。我需要通过我的Web应用程序(使用C#编写的ASP .NET)分发Windows安装包(.msi类型),但我需要在下载之前从我的Web应用程序动态更改.msi包。也就是说,msi包在安装过程中会将某些值添加到Windows注册表中,因此我需要从我的Web应用程序中设置这些值。
是否可能,如果是这样,我该怎么做?
答案 0 :(得分:1)
我正在从这里开始拍摄,但是如何用资源文件组合一个安装项目。让MSI项目读取资源文件中的注册表值。编写将/插入到资源文件中的内容并调用MSBuild(通过Process类)以根据需要构建MSI。
我几乎可以肯定这不会扩展但可能是你的解决方案吗?
答案 1 :(得分:1)
这听起来很棘手。我从未尝试过动态更新MSI,但我们在类似情况下所做的是将可更改的信息(例如配置文件)包含在MSI旁边的未压缩文件中,然后更新它们并将所有内容压缩为自解压缩的可执行文件然后将其传递给请求者。
这不是太慢,但我不会尝试每天下载10,000次。
答案 2 :(得分:1)
您的应用程序可以使用以下方式直接编辑.msi文件随WIX(http://wix.codeplex.com)附带的DTF库。 您可以通过使用属性并在Property表中更改其默认值来参数化现有注册表内容,或者只是将新行添加到Registry表中。
无论如何 - 要做这样的事情,你需要一些关于Windows Installer和安装程序数据库(.msi文件)的知识。所有常见表都记录在此处:http://msdn.microsoft.com/en-us/library/windows/desktop/aa368259(v=VS.85).aspx