我有一个 Web 安装项目,默认情况下在文本框安装程序屏幕中显示虚拟目录。我希望虚拟目录名称不能被用户编辑,并且总是默认为我在 msi 中设置的那个。这怎么能实现?
如果您不希望用户更改虚拟目录,则可以简单地从用户界面中删除“安装地址”对话框。
右键单击安装程序项目,然后选择“用户界面”。
展开“开始”节点。
右键单击“安装地址”。
选择“删除”
如果您希望为通常由安装地址对话框选择的网站、虚拟目录、应用程序池提供不同的参数,则可以按照其他人的描述使用自定义操作进行覆盖。
但是,根据我的经验,自定义操作无助于设置用户可以更改的默认值,因为它们执行之后请求用户输入的对话框。
设置用户可以在对话框中覆盖的一些默认值的最简单方法是执行以下操作。
删除欢迎页面。
添加文本框对话框(例如“文本框 (A)”)
将所有文本框的可见属性更改为 false,以便不显示文本框。
更改 BannerBitmap 和 BodyText 属性,使其看起来有点像欢迎页。
在“编辑 * * * & lt;n & gt;属性”中设置要覆盖的必要属性,并在“编辑& lt;n & gt;* * * 值”中设置默认值。
最有用的属性(IMHO)是。
TARGETDIR-要将文件复制到的站点所在的位置。
TARGETVDIR-要在指定站点中创建的虚拟目录。
TARGETAPPPOOL-要使用的应用程序池(注意:这必须存在,但不会创建)
TARGETSITE-要在其中创建虚拟目录的网站 / b / s3the site "
可以找到安装程序的完整属性列表here。
如果您真的想更好地控制 IIS 设置,我建议您将项目更改为标准的 Windows Installer 项目并创建自定义安装操作,以便您可以以编程方式创建 AppPools。开始了解以编程方式创建这些东西的好地方是here。
这样做的最大原因是自定义操作在提示后运行,但应用程序池和网站必须在之前创建安装程序可以提示。
我有一个自定义操作来设置 apppool(顺便说一句,当安装程序是用 VS2005 构建的)在我的 vs2008 Web 设置项目。
DirectoryEntry IISVdir = new DirectoryEntry(String.Format("IIS://{0}{1}/{2}", strServer, strRootSubPath, Vdir));
IISVdir.Properties["AppPoolId"].Value = appPool;
IISVdir.CommitChanges();
安装程序运行时没有对话框(删除了安装地址 UI 节点),但在虚拟目录上设置的 AppPool 最终成为 DefaultAppPool。
我的助手类中的其他自定义操作确实运行和工作。
所以一定还需要一些其他的魔法咒语。
谢谢
为了使用 Context.Parameters 获取虚拟目录
将自定义操作添加到安装节点(如果您想知道如何添加自定义操作,请使用此url)
右键单击自定义操作并选择属性窗口。
对于 CustomActionsData 属性 set / targetvdir = "[TARGETVDIR]"。
现在在您的安装程序类中,您可以通过 Context.Parameters [“targetvdir”] 获取虚拟 dir 名称。希望这对您有所帮助:)
Org 不允许开源或 GPL 开源。
解决方案:* 编辑自定义操作(右键单击 & gt;查看 & gt;自定义操作)以修复虚拟目录和路径更改 customactiondata:
/targetdir="[TARGETDIR]\" /connectionstring="[CONNECTIONSTRING]" /targetvdir="[TARGETVDIR]" /targetsite="[TARGETSITE]"
收件人:
/targetdir="[TARGETDIR]\" /connectionstring="[CONNECTIONSTRING]" /targetvdir="FIXED_NAME" /targetsite="[TARGETSITE]"
您可能只是从用户界面中删除安装地址,并设置一个将信息传递给自定义安装的组件
使用 msbuildtasks 在 msbuild 上编写包装器
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(85条)