2010-04-13 31 views
0

有谁知道我该如何动态创建安装包,将文件安装到安装运行时确定的文件夹中,而不是由用户确定,而是通过获取UserAppDataPath针对该特定PC上的特定用户。Winforms/.Net - 动态创建安装.exe或脚本

动态地,我的意思是我必须以编程方式创建安装包作为另一个进程的一部分。

任何帮助意见非常感谢!

+0

“安装文件到文件夹”是什么意思?如果您只想复制一些文件,您可以编写一个小型控制台应用程序并调用它。如果你想注册一些COM,再一个小的控制台应用程序。如果你想在某个位置创建一些默认设置...小型控制台应用程序。这取决于“安装文件”的含义。 – Ando 2010-04-13 07:24:52

+0

你需要动态地阐明你的意思 - 事实上我认为总体目标需要更清晰一些,任何像样的安装工具都会给你提供环境变量,比如用户应用程序数据路径 – Murph 2010-04-13 08:09:56

+0

感谢评论,请参阅下面的评论澄清 – Serexx 2010-04-14 04:04:24

回答

0

要构建安装程序包,可以使用WiX toolset。您的应用程序可以在用户的​​临时文件夹中为其构建.wxs源文件,并调用candle.exe(WiX编译器)和light.exe(WiX链接程序)以生成正确的.msi文件。

要获取用户的应用数据路径的位置,请使用Environment.GetFolderPath方法和ApplicationData参数。

这听起来很奇怪,我想你要在用户的机器上构建安装包。除非您正在构建一个用户可以使用它们生成的内容生成安装程序包的工具,否则没有理由这样做。 MSI(和WiX工具集)允许您在您的机器上构建一个安装程序包,以将安装用户的应用程序数据文件夹定位到其机器上。

+0

谢谢,我会看看WiX - 澄清:文件是从Expression Web 3插件输出的,而这些插件又需要由插件用户分发给其他用户。我们不希望那些最终用户不必担心解压zip文件,然后找到正确的.exe,WSH脚本或其他应用程序来运行。我们想要一个预先打包好的.exe文件,它只是简单地提取文件并将它们放在他们应该去的地方。安装程序不会建立在最终用户计算机上,而是建立在加载项用户的计算机上。也许这更清楚,也许不是。 – Serexx 2010-04-14 04:23:14

+0

这实际上使整个场景更清晰。我建议你用这个描述更新这个问题。另外,还不清楚加载项用户准备的程序包是否需要卸载,以及添加/删除程序对话框中的最终用户是否应该可见。 (换句话说 - 你的清理场景是什么) – 2010-04-14 06:05:42

+0

我问我的原因是因为WiX可能会对你的方案产生过大的影响,这取决于清理/卸载情况。 – 2010-04-14 06:07:24