Windows installer MSI不安装到所选目录

Windows installer MSI不安装到所选目录,windows-installer,Windows Installer,我正在使用Visual Studio 2010创建.MSI安装程序 当我构建.MSI并“安装”它时,所有东西都“看起来”正常工作,除了它总是将所有东西安装在C:驱动器的根目录中,无论我在初始对话框中选择什么 我束手无策。如果安装程序遇到“错误”,我可以找出它是什么吗?我怀疑当有限的用户尝试安装每台机器(每个人)安装时会发生这种情况。用户不是管理员,所以它变成了每个用户(只有我)安装到这些目录 从您的个人资料页面判断,我认为您最好尝试使用WIX来创建您的设置。大多数开发人员发现这个工具比其他创建设

我正在使用Visual Studio 2010创建.MSI安装程序

当我构建.MSI并“安装”它时,所有东西都“看起来”正常工作,除了它总是将所有东西安装在C:驱动器的根目录中,无论我在初始对话框中选择什么


我束手无策。如果安装程序遇到“错误”,我可以找出它是什么吗?

我怀疑当有限的用户尝试安装每台机器(每个人)安装时会发生这种情况。用户不是管理员,所以它变成了每个用户(只有我)安装到这些目录

从您的个人资料页面判断,我认为您最好尝试使用WIX来创建您的设置。大多数开发人员发现这个工具比其他创建设置的方法直观得多,尽管有一些学习曲线。它基于XML并编译为MSI二进制文件。我之所以建议这样做,是因为VisualStudio安装程序项目非常原始且容易出错

下面是一个快速的、基于示例的教程,我认为这使快速入门变得容易:

以下是在线教程:

Wix是真正的动手操作,通过理解几个示例,您可以快速完成很多工作。有关如何创建升级的几个链接,请参见本帖中的我的答案:


Chris Painter(顺便回答了您上面的问题)制作了一个名为ISWix的Wix工具,可以帮助您快速制作Wix安装程序:

您可以从记录安装程序开始。Windows Installer有一个目录表和一个名为costing的进程,该进程将这些条目解析为文件路径。当此过程出错时,目录通常默认为最大驱动器的根目录


我必须看一下你的安装程序,在虚拟机上测试它,然后阅读日志文件,给你一个更准确的答案

同意,不过我还是建议了Wix。有这么多的开发经验,对他来说会更容易、更可靠,你不这么认为吗?保罗:目录表是一个“猪耳”(自引用)关系表,包含目录项和指向其父目录的指针:。正如Chris所说,如果指向父目录的指针链在某个地方断开,则整个表无法正确解析。在Wix中,将目录结构“物理地”编码为XML样式代码的一部分。我只是想回答这个问题。通常情况下,使用VDPROJ有很多“开发人员经验”的人不想听到我深思熟虑的意见,即VDPROJ很差劲,他们需要了解更多关于底层Windows安装程序的信息,所以我厌倦了告诉他们。是的,我收集到了-但我们不能停止更好的部署:-)。VDPROJ太差了,根本不应该使用它们——完全同意。事实上,我偶尔也会使用它们。:)这很可能是我描述的特权问题。这在MSDN ClickOnce和安装项目论坛上经常出现。