一步步做自己的webinstall安装包
程序员文章站
2024-03-05 15:43:55
1、 为了能更好的操作iis,先添加个类库(installclasslibrary)到项目中。附代码 复制代码 代码如下: using system; using syst...
1、 为了能更好的操作iis,先添加个类库(installclasslibrary)到项目中。附代码
using system;
using system.collections;
using system.collections.generic;
using system.componentmodel;
using system.configuration.install;
using system.directoryservices;
using system.diagnostics;
using system.windows.forms;
using system.security.accesscontrol;
using system.io;
namespace installclasslibrary
{
[runinstaller(true)]
public partial class webinstaller : installer
{
public webinstaller()
{
initializecomponent();
}
public override void install(idictionary statesaver)
{
base.install(statesaver);
createvirtualdir();//以下代码为更改网站指定目录权限
directoryinfo di = new directoryinfo("d:\\yourpath\\xml");
if((di.attributes&fileattributes.readonly)!=0)
di.attributes=fileattributes.normal;
directorysecurity ds=di.getaccesscontrol();
ds.addaccessrule(new filesystemaccessrule("network service",filesystemrights.modify,inheritanceflags.objectinherit|inheritanceflags.containerinherit,
propagationflags.none,accesscontroltype.allow));
di.setaccesscontrol(ds);
//
}
void createvirtualdir()
{
try
{
directoryentry root = new directoryentry("iis://localhost/w3svc/1/root");
directoryentry newroot = root.children.add("virtualname", root.schemaclassname);
newroot.properties["path"][0] = "d:\\yourpath"; //this.context.parameters["targetdir"];
newroot.properties["appisolated"][0] = 2; // 值 0 表示应用程序在进程内运行,值 1 表示进程外,值 2 表示进程池
newroot.properties["accessscript"][0] = true; // 可执行脚本
newroot.invoke("appcreate", true);
newroot.properties["defaultdoc"][0] = "login.aspx";//设置起始页
newroot.properties["appfriendlyname"][0] = "applicationname"; // 应用程序名
newroot.commitchanges();
root.commitchanges();
}
catch (exception ee)
{
messagebox.show("虚拟目录创建失败!您可以手动创建! " + ee.message + ";" + ee.source + ";" + ee.targetsite + ";" + ee.innerexception + ";" + ee.stacktrace, "error", messageboxbuttons.abortretryignore, messageboxicon.error, messageboxdefaultbutton.button1, 0);
}
}
}
}
2、添加安装项目到解决方案中,然后在该安装项目(setup)中添加-项目输出,把web内容和刚才建立的类库添加到目录中。
3、在安装项目左键在属性窗口中更改制造商,安装程序的标题、是否针对所有用户安装、产品名等内容。
右键-视图-自定义操作,右键安装-添加自定义操作-应用程序文件夹,选择“安装类库(installclasslibrary)”,添加完成后,在文件系统中右键应用程序文件夹设置默认安装目录。
若还想去定义更多的用户安装数据,请增加用户界面。
复制代码 代码如下:
using system;
using system.collections;
using system.collections.generic;
using system.componentmodel;
using system.configuration.install;
using system.directoryservices;
using system.diagnostics;
using system.windows.forms;
using system.security.accesscontrol;
using system.io;
namespace installclasslibrary
{
[runinstaller(true)]
public partial class webinstaller : installer
{
public webinstaller()
{
initializecomponent();
}
public override void install(idictionary statesaver)
{
base.install(statesaver);
createvirtualdir();//以下代码为更改网站指定目录权限
directoryinfo di = new directoryinfo("d:\\yourpath\\xml");
if((di.attributes&fileattributes.readonly)!=0)
di.attributes=fileattributes.normal;
directorysecurity ds=di.getaccesscontrol();
ds.addaccessrule(new filesystemaccessrule("network service",filesystemrights.modify,inheritanceflags.objectinherit|inheritanceflags.containerinherit,
propagationflags.none,accesscontroltype.allow));
di.setaccesscontrol(ds);
//
}
void createvirtualdir()
{
try
{
directoryentry root = new directoryentry("iis://localhost/w3svc/1/root");
directoryentry newroot = root.children.add("virtualname", root.schemaclassname);
newroot.properties["path"][0] = "d:\\yourpath"; //this.context.parameters["targetdir"];
newroot.properties["appisolated"][0] = 2; // 值 0 表示应用程序在进程内运行,值 1 表示进程外,值 2 表示进程池
newroot.properties["accessscript"][0] = true; // 可执行脚本
newroot.invoke("appcreate", true);
newroot.properties["defaultdoc"][0] = "login.aspx";//设置起始页
newroot.properties["appfriendlyname"][0] = "applicationname"; // 应用程序名
newroot.commitchanges();
root.commitchanges();
}
catch (exception ee)
{
messagebox.show("虚拟目录创建失败!您可以手动创建! " + ee.message + ";" + ee.source + ";" + ee.targetsite + ";" + ee.innerexception + ";" + ee.stacktrace, "error", messageboxbuttons.abortretryignore, messageboxicon.error, messageboxdefaultbutton.button1, 0);
}
}
}
}
2、添加安装项目到解决方案中,然后在该安装项目(setup)中添加-项目输出,把web内容和刚才建立的类库添加到目录中。
3、在安装项目左键在属性窗口中更改制造商,安装程序的标题、是否针对所有用户安装、产品名等内容。
右键-视图-自定义操作,右键安装-添加自定义操作-应用程序文件夹,选择“安装类库(installclasslibrary)”,添加完成后,在文件系统中右键应用程序文件夹设置默认安装目录。
若还想去定义更多的用户安装数据,请增加用户界面。
推荐阅读
-
一步步做自己的webinstall安装包
-
CNN中做归一化用到的相关API(自己的小总结:tf.nn.moments()函数理解) 以及CNN中NHWC转NCHW的方法
-
自己学习c++过程中写下的笔记,只做基础了解使用
-
自己做的 flashget 1.81.1002 精减绿色版 博客分类: 软件 PHPGoogle.net
-
自己做的 flashget 1.81.1002 精减绿色版 博客分类: 软件 PHPGoogle.net
-
劫持Linux idle进程做点自己的计算任务
-
用其他帐号(比如QQ msn)登录自己的网站,需要如何做呀?
-
自己学习做的一个类论坛网站要被实际投入运作和维护,应该要学习一些什么技能?
-
Discuz! X2论坛怎么给自己做的单页面加下访问权限
-
Android推送自己做的效果不给力,请问大家是怎么解决的