作者james999 (无伤大雅)
看板C_Sharp
标题[问题] Setup Project Silent启动另一安装包问题
时间Mon Sep 3 13:54:39 2018
各位大神们好,
小弟最近在用Setup Project打包程式,称呼为A。
其中因为专案需求,我必须在A的安装过程中安装一个InstallShield打包的安装包B,
在this.AfterInstall及this.BeforeUninstall的部份分别加入了「安装」及「反安装」B
的代码,
不过却无法顺利执行,B产生的setup.log得到的ResultCode=-3,但原因不明…
恳请板上大神协助,这个问题困扰小弟好久,一直无法解决阿…谢谢!!
下述代码中,InstallerHelper_AfterInstall及 InstallerHelper_BeforeUninstall内的
代码,分别放在新建立的C# console程式中,却能正常运行,
且WaitforExit()也能顺利卡住,而B安装包也能顺利执行,ResultCode=0。
代码如下:
--
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Linq;
using System.Threading.Tasks;
using System.Configuration;
using System.Windows;
using System.IO;
using System.Diagnostics;
using System.Threading;
namespace FRWebService
{
[RunInstaller(true)]
public partial class InstallerHelper : Installer
{
public InstallerHelper()
{
InitializeComponent();
this.BeforeInstall += new
InstallEventHandler(InstallerHelper_BeforeInstall);
this.AfterInstall += new
InstallEventHandler(InstallerHelper_AfterInstall);
this.BeforeUninstall += new
InstallEventHandler(InstallerHelper_BeforeUninstall);
this.AfterUninstall += new
InstallEventHandler(InstallerHelper_AfterUninstall);
}
private void InstallerHelper_BeforeUninstall(object sender,
InstallEventArgs e)
{
try
{
String arg = "/s /uninst";
Process p = Process.Start("C:\\Program
Files\\Test\\setup_io.exe", arg);
p.WaitForInputIdle();
p.WaitForExit();
}
catch (Exception ex)
{
}
}
private void InstallerHelper_BeforeInstall(object sender,
InstallEventArgs e)
{
}
private void InstallerHelper_Committing(object sender,
InstallEventArgs e)
{
}
private void InstallerHelper_Committed(object sender,
InstallEventArgs e)
{
}
private void InstallerHelper_AfterInstall(object sender,
InstallEventArgs e)
{
try
{
String arg = "/s";
Process p = Process.Start("C:\\Program
Files\\Test\\setup_io.exe", arg);
p.WaitForInputIdle();
p.WaitForExit();
}
catch (Exception ex)
{
}
}
private void InstallerHelper_AfterUninstall(object sender,
InstallEventArgs e)
{
}
//Code to perform at the time of installing application
public override void Install(System.Collections.IDictionary
stateSaver)
{
System.Diagnostics.Debugger.Launch();
base.Install(stateSaver);
System.Windows.Forms.MessageBox.Show("Installing Application...");
}
public override void Uninstall(System.Collections.IDictionary
stateSaver)
{
System.Diagnostics.Debugger.Launch();
base.Uninstall(stateSaver);
System.Windows.Forms.MessageBox.Show("Uninstalling
Application...");
}
}
}
--
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.132.128.217
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1535954082.A.450.html
以下更新一下进度… 请大神帮帮忙呀
1.
setup.log的内容只有这样
--
[ResponseResult]
ResultCode=-3
--
2.
Setup Project会产生两个档案,一个是msi,一个是exe,我尝试用管理员身份运行该exe
,但也是无法…
P.S. 目前试过能成功的部份是…AfterInstall时运行B安装包,但是不要用WaitForExit
的话,就能顺利Silent安装… 不过因为B安装包装完我还要做一些操作...这样不行!
※ 编辑: james999 (220.132.128.217), 09/03/2018 13:56:24