我有Inno安装程序(在我之前写的),它提取了一组VSTO文件并开始安装VSTO MS Office插件。它有一个问题,当将VSTO文件提取到临时文件夹并启动VSTOInstaller.exe
时,它会立即显示完成按钮。如果用户单击它,临时文件将被删除,并在VSTOInstaller
中开始实际安装VSTO插件,然后导致“文件未找到”错误。我应该解决这个问题(理想情况下,只有当它生成的VSTOInstaller
完成执行时,Inno安装程序中的完成按钮才会出现)。
VSTO包本身(“应用程序文件”文件夹、setup.exe
和. vsto
文件的集合)是由Visual Studio中的点击一次发布工具创建的。包经过数字签名等。
我尝试了各种选项:
当前<代码>。iss文件看起来像:
;---------------------------------------------------------------------
[Setup]
AppName=Outlook Addin
AppVerName=Outlook Addin 2.0
DefaultDirName={tmp}
DefaultGroupName=Outlook Sync Addin
Compression=bzip
Uninstallable=no
OutputBaseFilename=OutlookSetup
VersionInfoVersion=2.0.0.10
UsePreviousAppDir=no
;
;---------------------------------------------------------------------
[Files]
Source: "SourcesForExe\*"; DestDir: "{app}"; Attribs: hidden system; Flags: recursesubdirs uninsneveruninstall
;---------------------------------------------------------------------
[Run]
Filename: "{app}\OutlookAddin.vsto"; Parameters: "OVERRIDE=YES"; StatusMsg: "Extracting Outlook Addin installer..."; Flags: shellexec waituntilterminated
最初,安装程序运行setup.exe
而不是OutlookAddin.vsto
。这导致setup.exe
启动VSTOInstaller.exe
并立即关闭。我认为更改为OutlookAddin.vsto
(并添加shellexec
标志)可以解决这个问题,这样VSTOInstaller.exe
就可以直接由这个方法启动,但是它不起作用。原来. vsto
文件是由vstoee.dll
首先打开的。
知道如何保存未打包的文件(它们放在临时文件夹中没什么大不了的)或者等待安装过程中产生的所有子进程吗?
如果这很重要,Inno安装程序是5.2.3,VSTO是使用Visual Studio 2015构建的。使用Outlook 2010和2016进行了测试。
我最近创建了与您要求相同的内容。它对我来说工作正常,开始设置.exe然后搜索 VSTO 进程并将退出事件绑定到它。
var process = Process.Start("Setup.exe");
Thread.Sleep(2000);
var processs = Process.GetProcesses().Where(i => i.ProcessName.Contains("VSTO")).ToList();
foreach (var item in processs)
{
if (item.ProcessName.Contains("VSTO"))
{
item.EnableRaisingEvents = true;
item.Exited += ExcelProcessExit; // this method will be executed after vsto completes it's installation or user cancels the installer.
}
}
{tmp}
是安装程序的临时文件夹,最后会被删除。如果要保留文件,请使用 TEMP
环境变量显式引用用户的临时文件夹:
DefaultDirName={%TEMP}\outlook_addin_tmp
不过,这是一个hack——正确的解决方案是等待VSTO安装程序完成。我建议你显式启动VSTOInstaller.exe
。它应该允许你等待它完成
像这样的东西:
Filename: "{commonpf}\microsoft shared\VSTO\<ver>\VSTOInstaller.exe"; \
Params: "{app}\OutlookAddin.vsto"; \
StatusMsg: "Extracting Outlook Addin installer..."; Flags: waituntilterminated
安装完毕后,会出现相应的安装完毕界面: 然后点击“完成”,即可启动默认勾选了的Notepad++了。 至此,Notepad++安装完毕。
本文向大家介绍安装完成后如何找回SQL Server实例安装时的序列号,包括了安装完成后如何找回SQL Server实例安装时的序列号的使用技巧和注意事项,需要的朋友参考一下 当需要再次安装SQL Server时,如果序列号找不到了,可以试着从已经安装的实例里找回序列号,因为安装完SQL Server后,序列号(Product Key)被保存在注册表里; MSDN订阅下载的安装包是内置序列号的,则
含安装程序的源码但不包含lerx v2的源码。 安装说明: 1.本安装程序是用Java自行开发的,已自带java环境。自动侦测msvcr71.dll。 2.测试环境:全新安装的Windows 2003 Server、XP、Windows 7(未安装任何软件)。 3.安装程序将安装及自动配置 Java环境、MySQL Server 5.0、Tomcat及Lerx V2。
在我的< code>[Files]部分中,我有以下内容: 在部分我有: 最后,在部分,我有: 现在,在这个版本的程序中,我已经将这两个DLL文件的功能合并到另一组DLL文件中: 因此, DLL 文件。现在,我知道如果它们存在,我可以简单地删除它们: 但据我所知,这不会像 中那样触发 DLL 文件的注销。 我该怎么做?在安装过程中删除并注销DLL文件(如果存在)?
我正在尝试安装NetBeans,但我得到一个白色窗口“NetBeans安装程序锁定文件存在”并退出。我以前从未在这台PC上安装过NetBeans,安装程序第一次启动时,我不小心拒绝了它的管理员权限。 我尝试过: > 搜索隐藏文件可见的锁定文件。 在appdata\roaming中查找NetBeans文件夹,但没有。 尝试不同的安装程序 如果有人能帮我,我将不胜感激。