我现在正在努力使用Windows Installer 2天。我在visual studio 2010下有一个c#项目,我的应用程序只使用Spring.Net填充ControlTab。 Spring配置文件位于库类中(再次没有自定义操作,一切正常)。
基于演练:http://msdn.microsoft.com/en-us/library/9cdb5eda%28v=vs.100%29.aspx。我创建了一个与我的项目具有相同结构的简单项目:Windows窗体应用程序使用位于类库中的弹簧配置文件来初始化窗体上的按钮。我实现的自定义操作适用于这个简单的项目但是当我对我的项目执行完全相同的步骤时,msi文件的安装失败并出现以下错误(使用msiexe检索):
#DEBUG: Error 2835: The control ErrorIcon was not found on dialog ErrorDialog
When installing this package, an unexpected error has occurred. This may indicate a problem with this package. The error code is 2835th Arguments: ErrorIcon, ErrorDialog,
Error 1001. Error 1001. The installer types in the assembly C:\...\TestSpring.exe can not be queried. -> At least one type in the assembly can not be loaded. Retrieve the LoaderExceptions property if you need further information.
MSI (s) (60!C4) [09:10:37:263]:
MSI (s) (60:70) [09:10:37:263]: Leaked MSIHANDLE (111) of type 790531 for thread 20932
MSI (s) (60:70) [09:10:37:263]: Note: 1: 2769 2: _489C2921_6B59_42E8_A55A_399B1A3D2382.install 3: 1
DEBUG: Error 2769: Custom Action _489C2921_6B59_42E8_A55A_399B1A3D2382.install did not close 1 MSIHANDLEs.
When installing this package, an unexpected error has occurred. This may indicate a problem with this package. The error code is 2769. Argumente: _489C2921_6B59_42E8_A55A_399B1A3D2382.install, 1,
CustomAction _489C2921_6B59_42E8_A55A_399B1A3D2382.install returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Aktion beendet um 09:10:37: InstallExecute. return value 3.
我猜错误是在尝试安装应用程序时使用代码1603的错误(我使用演练中给出的安装程序类)
我比较了我的两个项目,没有差异(我的项目比用于测试自定义操作的项目更大)
我试过了: My installation failed (missing DLL). What do I do to correct this?:将所有项目设置为Build并尝试将配置从Debug更改为Release。完成后我关闭属性窗口,重新打开它:模式不再是Release而是Debug。 我用msiexe和orca试图找出我的错误的原因,但我找不到它。
我读到:Windows installer: Error 1001, CustomAction _xxxxx.install returned actual error code 1603但它似乎与我的情况不一样
关于我能检查什么的任何想法?
ps:我使用自定义操作尝试了我的项目,但是当InstallerClass设置为False时,应用程序随后在安装结束之前启动,我关闭应用程序,然后安装运行直到结束。在安装结束之前启动应用程序是否正常?
UPDATE1 :
我在项目中再次完成了所有过程:
但是我没有实现类Installer的任何方法,所以我的Installer1类是:
[RunInstaller(true)]
public partial class Installer1 : System.Configuration.Install.Installer
{
public Installer1()
{
InitializeComponent();
´ }
}
我仍然检索到同样的错误。因此,我的Installer1类没有出现错误,因为我的项目带有默认内容的Installer类也会引发相同的错误。这个错误来自.NET吗?但是为什么它能在我对我的简单项目进行的第一次测试中起作用呢?
UPDATE2 : 我创建了一个没有文件夹的安装来存储dll,安装工作正常。
我使用msiexec创建了日志文件并使用了logview,但我还没有找到为什么我的安装程序失败,即使安装工作没有DLL文件夹,我仍然不知道为什么我的安装程序失败时我定义了一个文件夹存放dll的文件夹