我有一个Web设置项目,默认情况下会在文本框安装程序屏幕中显示虚拟目录。我希望用户无法编辑虚拟目录名称,并且始终默认为我在msi中设置的名称。如何实现这一目标?
答案 0 :(得分:33)
如果您不希望用户更改虚拟目录,只需从用户界面中删除“安装地址”对话框。
如果您想要通常由安装地址对话框选择的网站,虚拟目录,应用程序池的不同参数,您可以使用其他人描述的自定义操作覆盖这些参数。
但是,根据我的经验,自定义操作无法帮助设置用户可以更改的默认值,因为他们执行 After 要求用户输入的对话框。
设置用户可以在对话框中根据需要覆盖的默认值的最简单方法是执行以下操作。
最有用的属性(恕我直言)是。
TARGETDIR - 要复制文件的位置
TARGETVDIR - 要在指定站点中创建的虚拟目录
TARGETAPPPOOL - 要使用的应用程序池(注意:这必须存在,不会创建)
TARGETSITE - 要创建虚拟目录的网站(注意:这是网站的 配置数据库值 ...例如:“/ LM / W3svc / 2“。另请注意,该网站必须存在。)
可以找到安装程序的完整属性列表here。
如果您真的想要更好地控制IIS设置,我建议您将项目更改为标准的Windows Installer项目并创建自定义安装操作,以便您可以以编程方式创建AppPools。开始理解以编程方式创建这些内容的好地方是here。
这样做的最大原因是自定义操作在 提示后运行 但是必须在 之前创建应用程序池和网站< / em> 安装程序可以提示。
答案 1 :(得分:3)
理论上听起来不错,但据我所知,它不起作用,至少不适用于设置AppPool。在我的vs2008 Web设置项目中,我有一个自定义操作来设置apppool(在使用VS2005构建安装程序时可以正常工作)。
DirectoryEntry IISVdir = new DirectoryEntry(String.Format("IIS://{0}{1}/{2}", strServer, strRootSubPath, Vdir));
IISVdir.Properties["AppPoolId"].Value = appPool;
IISVdir.CommitChanges();
安装程序没有对话框运行(删除了安装地址UI节点),但虚拟目录上设置的AppPool最终成为DefaultAppPool。
我的帮助器类中的其他自定义操作确实可以运行并运行。
所以必须有其他一些神奇的咒语。
感谢。
答案 2 :(得分:2)
使用Context.Parameters
获取虚拟目录答案 3 :(得分:1)
切换到Wix并使用他们的Web Extensions
答案 4 :(得分:1)
选择您的设置项目,查看&gt;编辑&gt;用户界面,选择“安装地址”对话框,然后将其删除。
编辑:
正如Shay所指出的,用户可以从命令行覆盖默认安装位置。要覆盖它,您应该在InstallExecuteSequence中设置TARGETDIR属性。不幸的是,您无法从Visual Studio更改此序列,您必须使用Orca:
答案 5 :(得分:1)
Org不允许使用开源或GPL开源。
解决方案: *编辑自定义操作(右键单击&gt;查看&gt;自定义操作)以修复虚拟目录和路径 更改customactiondata:
/targetdir="[TARGETDIR]\" /connectionstring="[CONNECTIONSTRING]" /targetvdir="[TARGETVDIR]" /targetsite="[TARGETSITE]"
致:
/targetdir="[TARGETDIR]\" /connectionstring="[CONNECTIONSTRING]" /targetvdir="FIXED_NAME" /targetsite="[TARGETSITE]"
您可能只是从用户界面中删除了安装地址,并设置了将信息传递给自定义安装的组件
答案 6 :(得分:1)
Lo-tech解决方案:在notepad ++中编辑vdproj文件以设置虚拟目录并从用户界面编辑器中删除“安装地址”对话框。
答案 7 :(得分:0)
在VS中对我来说
右键单击安装项目
查看->文件系统
Web应用程序文件夹(在左窗格中)
在属性窗口(在右侧,底部)
虚拟目录(最后一个)
您可以在此处更改/设置IIS上的默认路径,即可以安装的目标目录。