一步步做自己的webinstall安装包

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)”,添加完成后,在文件系统中右键应用程序文件夹设置默认安装目录。
若还想去定义更多的用户安装数据,请增加用户界面。

(0)

相关推荐

  • c#制作类似qq安装程序一样的单文件程序安装包

    复制代码 代码如下: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Threading;using System.Xml;using System.IO;using System.IO.Compressi

  • python学习之第三方包安装方法(两种方法)

    这篇文章主要介绍了python学习之第三方包安装方法,最近在学习QQ空间.微博(爬虫)模拟登录,都涉及到了RSA算法.这样需要下一个RSA包(第三方包),在网上搜了好多资料,具体有以下两种方法: 第一种方法(不使用pip或者easy_install): Step1:在网上找到的需要的包,下载下来.eg. rsa-3.1.4.tar.gz Step2:解压缩该文件. Step3:命令行工具cd切换到所要安装的包的目录,找到setup.py文件,然后输入python setup.py install

  • 已证实Au_.exe是NSIS安装包的一个组成部分与说明

    已证实Au_.exe是NSIS安装包的一个组成部分,不是病毒其卸载360safe时的确会连接如下地址的80端口 60.195.253.85 抓包如下: 源地址:10.1.5.189  端口:1214        目标地址:60.195.253.85  端口:80        TTL: 64        PacketSize:64 协议:TCP                TCP 标志:ACK|URG 0x02 0x04 0x05 0xAC 0x01 0x03 0x03 0x02 0x01

  • android实现程序自动升级到安装示例分享(下载android程序安装包)

    复制代码 代码如下: //程序下载升级 zhouxiang@JavascriptInterfacepublic void UpdateCAECP(final String path){try{AlertDialog.Builder builder = new Builder((Context)obj);builder.setMessage("检测到有新版本发布,是否进行下载升级?");builder.setTitle("程序更新提示");builder.setPos

  • 查看Python安装路径以及安装包路径小技巧

    特别是linux系统,装了多个python,有时候找不到python的绝对路径,有时候装了个django,又找不到django安装到哪里了..当然查看的方法有很多种,这里列出几种,供没有经验的人参考下. 复制代码 代码如下: G:\code\moniter>python -c "from distutils.sysconfig import get_python_lib; print (get_python_lib())" C:\Python27\Lib\site-package

  • 一步步做自己的webinstall安装包

    1. 为了能更好的操作IIS,先添加个类库(InstallClassLibrary)到项目中.附代码 复制代码 代码如下: using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Configuration.Install; using System.DirectoryServices; using System.Diag

  • 阿里云Windows 2008一键安装包配置php web环境图文安装教程(IIS+Php+Mysql)

    集成包下载地址: 1.阿里云Windows Server 2008 一键安装Web环境包 x64 2.阿里云Windows Server 2008 一键安装Web环境包 32 集成包版本介绍: IIS7组件.FTP7.php 5.5.7.mysql 5.6.15.phpMyAdmin 4.1.8.phpwind 9.0.ISAPI_Rewrite 安装包: 32位和64位 安装包启动 点击"下一步"后,指定安装目录,默认使用C:\websoft,然后点击"安装".

  • MSI之制作免输序列号安装包的方法

    本文用到的工具:Orca,可以在 http://www.crsky.com/soft/8680.html 下载到 挺象orz的 呵呵 以下是orca的简介: Orca 是一款由微软提供的用于 Windows Installer 数据库表编辑器.可用来编辑 Windows Installer 数据库文件 (.msi) 文件,合并模块 (.msm) 文件,补丁 (.msp) 文件,内部一致性计算程序 (.cub) 文件和补丁创建属性 (.pcp) 文件.是修改和本地化 Windows Install

  • 数据库安装包和升级包脚本工具RedGate使用介绍

    这篇日志记录一下我在公司所学习到的数据库安装包的设计.正好这些内容也是我最近工作遇到的一些问题,在此记录并分享一下. 在产品的开发和版本更新过程中,数据库的结构难免会一直发生变化.为了尽量减少升级时的工作量,设计一个好的数据库升级方式就显得很重要.在设计数据库安装包时,既要考虑到全新安装时如何生成默认数据,也要考虑从老版本升级时旧的数据如何迁移如有必要). 基本上,安装包可以分成三个部分:Pre-script,数据库安装或升级和Post-script. 一.数据库安装或升级 首先,我们使用到的是

  • Electron autoUpdater实现Windows安装包自动更新的方法

    前言 Electron帮助我们突破浏览器的界限,通过Electron构建的桌面应用拥有各种浏览器应用梦寐以求的能力. Electron提供的autoUpdater还可以帮助我们实现桌面应用的自动更新. 文件结构 首先,我们已经有了一个基于Electron做的应用,项目中有两个package.json.这样做的一个原因是将devDependencies和dependencies分开了,另外就是不需要在打包的时候再去指定哪些依赖不需要一起打到安装包里面去了(通过ignore参数). 目录结构类似于这

  • Postman安装与使用详细教程 附postman离线安装包

    Postman一款非常流行的API调试工具.其实,开发人员用的更多.因为测试人员做接口测试会有更多选择,例如Jmeter.soapUI等.不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大. 需要postman安装包的童鞋可以通过下面链接自行下载哈! postman离线安装包亲测可用 官方网站:https://www.getpostman.com/ ###安装 1.Postman最早是作用chrome浏览器插件存在的,所以,你可以到chrome商店搜索下载安装,因为重

  • 怎样优化今日头条IOS安装包

    前言 今日头条 iOS 端从 2016 年起就关注到了安装包大小的问题,并启动了包大小优化.2017 年,我们将当时的经验发表为技术文章 <干货|今日头条iOS端安装包大小优化-思路与实践>[1]. 如今三年过去了.今日头条在继续探索包大小优化时实践了更多思路,包括构建配置.图片压缩.__TEXT 段迁移.二进制段压缩等.这些优化项在业务入侵较少的前提下给今日头条带来了显著的包大小收益.同时,整个业界在包大小优化上也产出了更多方案.因此我们更新文章,期待与大家共同交流包大小优化这件事. 表格:

  • R语言编程学习从Github上安装包解决网络问题

    目录 1. remotes 包安装 2. devtools 包安装 3. 从 gitee.com 上安装 4. 离线安装 1)先从 GitHub 上 下载 zip 压缩文件: 2)在本地 R Studio 上进行安装: 当我们想使用 R 安装一些 Github 相关的软件包,经常会遇到或者或那的网络问题,此时我们需要怎么做呢? 以最近大家分析疫情数据经常用的 Y叔的 nCov2019 包为例,通常我们可以使用如下的尝试顺序: 1. remotes 包安装 install.packages("re

  • PowerShell远程安装MSI安装包、EXE可执行程序的方法

    尽管对IT管理员或者开发者来讲,这是一个很常见的任务,但是在网上能找到"远程安装一个msi包或者exe应用程序"的相关文档还是比较少的.甚至有人在一些论坛的评论中写道,这不可能实现.事实上还是可以的.我会在本文提供两段代码,分别负责远程安装MSI包和EXE可执行应用程序. 一.安装MSI包 使用PowerShell调用WMI对象,你可以执行下面的脚本来安装你的MSI安装包: 复制代码 代码如下: $box="deviis01" #this is the name o

随机推荐