MSI(MicroSoft Installer) 화일의 정확한 용도 ? 

Windows Installer 설치 파일입니다. 

윈도우 운영체제에서 말썽이 일어나는 원인 가운데 높은 비중을 차지하는 것이 프로그램
설치 과정에서 같이 설치되는 시스템 관련 파일들(주로 DLL)입니다. 윈도우에서는 DLL(=동적 링크 라이브러리)이라는 기능을 제공합니다. 아마 DLL 파일은 종종 보셨을텐데, 이 DLL 파일은 독립적으로 실행되는 실행 파일이 아니라 다른 실행 파일에서 호출해서 쓸 수 있는 실행 코드만이 들어 있는 파일입니다. 이 기능을 사용하여 여러 프로그램에서 공통적으로 쓰이는 실행 코드를 각각의 프로그램에 전부 놓지 않고 한 DLL에만 놓은 뒤 여러 프로그램들이 이 한 DLL에 접근하여 코드를 호출함으로써 메모리와 디스크 공간의 낭비를 막고 효율적으로 멀티 태스킹(윈도우에서는 동시에 여러 프로그램이 실행될 수 있는 것은 아시죠?)을 할 수 있게 해 줍니다.

그런데, 바로 DLL이 종종 말썽을 일으키는 경우가 있습니다. 예를 들면 a.dll을 사용하는 프로그램 A와 프로그램 B가 있다고 가정하고, 이미 내 컴퓨터에 프로그램 A를 설치해서 쓰고 있다고 가정합시다. 

그런데 프로그램 B를 설치하고 이 과정에서 a.dll이 새롭게 설치되었는데, 처음에 있던 a.dll의 버전이 1이고 나중에 설치된 a.dll이 버전이 2일 경우, 프로그램 A는 버전 2에 있는 a.dll과 맞지 않아서 실행이 안되거나 에러를 일으킬 수 있습니다. 설치되는 프로그램이 많아지고 프로그램과 DLL, DLL과 DLL(한 DLL이 다른 DLL에 있는 실행 코드를 부를 수도 있습니다)의 관계가 점점 얽히면 점점 시스템이 불안해지고 잦은 에러를 일으킬 수도 있습니다. 

또한 설치 도중에 어떤 이유로 에러가 일어나서 설치가 중단된 경우, 그때까지 설치되었던 파일들이 그대로 남아서 문제를 일으킬 수도 있고, 설치되었던 프로그램을 지울 경우에도 말끔히 지워지지 않고 남은 파일들이 문제를 일으킬 수도 있습니다. 이것을 보통 'DLL 지옥'(DLL hell)이라고 부릅니다. 윈도우 인스톨러는 이러한 문제점에 대한 해결 방안으로 MS에서 좀더 강력한 설치 지원을 위해서 만들어진 기술입니다. 윈도우 인스톨러는 다음과 같은 특징을 가지고 있습니다.

- DLL의 버전 체크를 통해서 위험 요소에 대한 경고를 하며, 중요한 시스템 파일이 함부로 바뀌는 것을 차단합니다.

- 설치가 중단된 경우, 롤백(rollback) 기능을 지원하여 설치 이전으로 완벽한 원상복구를 해 주며, 설치된 프로그램을 지울 경우에도 예전보다 훨씬 말끔하게 관련 파일들을 청소해 줍니다.

- 모든 파일을 설치 때 깔지 않아도, 설치된 프로그램에서 어떤 기능이 처음 실행될 때에야 그 기능에만 관련된 파일을 설치할 수 있도록 하는 부분 설치 기능을 지원하며 MS 인스톨러는 설치되지 않은 파일들에 관련된 기능이 처음으로 실행되는 것을 감지하여 파일 설치를 자동으로 권고하거나 수행합니다. 또한 CD-ROM과 같은 매체를 통한 설치 이외에도 네트워크와 인터넷을 통한 설치도 함께 지원합니다.

윈도우 인스톨러는 윈도우 2000, Me, XP에서는 기본 지원하며, 98 이하에서는 따로 윈도우 인스톨러를 설치해야 합니다. .msi는 윈도우 인스톨러 기능을 사용하는 설치 파일입니다. .msi 파일이 있는 경우에도 보통 setup.exe를 함께 제공하지만 이것은 단순히 .msi를 실행시키거나, 윈도우 인스톨러가 없는 경우를 감지하여 인스톨러를 설치하는 기능만을 합니다. 요즘은 대부분의 설치 프로그램들이 .msi 형식으로 배포되며, 이것이 전혀 없이 배포되는 프로그램은 윈도우 인스톨러가 아닌 방식으로 설치된다고 보시면 되겠습니다. 

윈도우즈 시리즈를 만든 마이크로 소프트사는 설치 프로그램을 msi 파일로 바꾸어 
가고 있습니다. 윈도우즈 XP는 msi 파일을 다룰 수 있지만 버전이 낮은 윈도우즈 시리즈는 '윈도우즈 인스톨'을 깔아야 합니다. 마이크로 소프트사의 윈도우즈 업데이트 사이트에서 윈도우즈 인스톨러를 깔 수 없다면 인터넷 자료실이나 PC 통신에서 'MS 윈도우 인스톨러(MSI) "Windows Installer" 2.0'을 검색해서 내려받아 깔면 됩니다.



출처 - http://blog.naver.com/nuloonggee/90149314682








'Development > Windows Programming' 카테고리의 다른 글

windows prog - 오디날(ordinal) error  (0) 2013.10.03
Posted by linuxism
,


* servlet config in server-side 

response.addHeader("Pragma", "no-cache");

response.addHeader("Cache-Control", "no-store, no-cache, must-revalidate");








a.php 페이지에서 폼형식으로 날짜를 선택하는 폼이 있습니다.  그리고 iframe으로 
날짜를 검색해서 해당결과를 이용하여 .png파일로 출력하는 b.php파일이 있습니다. 
오늘 계속테스트하는 도중에 그림파일이 갱신이 안되는 경우가 있어서 확인해보니깐 
인터넷옵션->임시 인터넷 파일(설정)->저장된 페이지의 새 버전 확인(자동)으로 맞춰져 있더군요 아무래도 그림파일을 저장할 때 같은 이름으로 계속 저장해서 이런경우 이전 그림이 계속 남아있는것 같습니다. 설정을 바꾸지 않고 코드상에서 해결할수 있는 방법이 있습니까.? 조언 좀 부탁드립니다.

전체댓글수 4

  • 기술레벨커뮤니티레벨하늘처럼 06-12-27 20:37 

    소스보기

  • 보통 쓰레기값을 붙여주죠.. 

    b.php?x=23&y=33 이런식으로 계속 값을 랜덤하게 뿌려주면 됩니다..
  • 기술레벨커뮤니티레벨reds1832 06-12-27 21:36 

    소스보기

  • 그러면 계속 해서 그림파일을 저장해야 한다는 이야기인데..용량문제는 없겠습니까?
  • 기술레벨커뮤니티레벨규~~ 06-12-28 05:55 

    소스보기

  • 차라리 GD를 사용하고 헤더에 no-cache 를...
  • 기술레벨커뮤니티레벨reds1832 06-12-28 12:06 

    소스보기

  • 규~~님 말씀 처럼 헤더에 no-cache를 해봤는데 잘 안되더라구요 그래서 여기저기 기웃거린 결과 time변수를 사용해서 처리하는걸 해봤는데 됩니다.. 
    $time = time(); 
    echo "<img src='images/graphImage.png?=$time'>"; 
    이런식으로 하니깐 되네요..



출처 - http://phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_html&wr_id=86146&sca=&sfl=wr_subject%7C%7Cwr_content&stx=iframe&sop=and&spt=-41807&page=56



'Web > Common' 카테고리의 다른 글

web - SPDY  (0) 2014.01.09
해상도  (0) 2013.11.19
web - 반응형(responsive) 웹  (0) 2013.09.14
web - deep link(딥링크)  (0) 2013.07.28
압축 - DEFLATE, SDCH 알고리즘  (0) 2013.06.27
Posted by linuxism
,


There is a question already in Stackoverflow, very similar with my question. The thing is that the answer for that questions was for a Java Driver, I am trying to do it in the shell.

I am doing this...

db.meta.update({'fields.properties.default': { $type : 1 }}, {'fields.properties.default': { $type : 2 }})

This is not working!


Answers

The only way to change the $type of the data is to perform an update on the data where the data has the correct type.

In this case, it looks like you're trying to change the $type from 1 (double) to 2 (string).http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24type

So simply load the document from the DB, perform the cast (new String(x)) and then save the document again.

If you need to do this programmatically and entirely from the shell, you can use thefind(...).forEach(function(x) {}) syntax.


In response to the second comment below. Change the field bad from a number to a string in collectionfoo.

db.foo.find( { 'bad' : { $type : 1 } } ).forEach( function (x) {   
  x.bad = new String(x.bad); // convert field to string
  db.foo.save(x);
});
share|improve this answer
Thanks! This is what I was looking for! – J. Quintas Feb 12 '11 at 19:12
Any chance of an example - changing a field type from int to string (or vice versa), from the shell? – Alister Bulman Mar 16 '11 at 13:30
Thanks @gates, you are a star. If I could, I'd up-vote you twice. :-) – Alister Bulman Mar 23 '11 at 10:14
4 
in case Int32->String, new String(x.bad) creates collection of Strings with 0-index-item x.badvalue. Variant ""+x.bad, described by Simone works as desired - creates String value instead of Int32 – Dao Jul 30 '12 at 16:36

// String to Integer

db.db-name.find({field-name : {$exists : true}}).forEach( function(obj) { obj.field-name = new NumberInt(obj.field-name); db.db-name.save(obj); } );

// Integer to String

db.db-name.find({field-name : {$exists : true}}).forEach( function(obj) { obj.field-name = ""+obj.field-name; db.db-name.save(obj); } );
share|improve this answer
This is great - do you know how you'd convert a string (think currency like '1.23') to the integer 123? I assume you'd have to parse it as a float or decimal, multiply it by 100, then save it as an integer, but I can't find the right docs to do this. Thanks! – Brian Armstrong Feb 23 '12 at 5:59
Actually this working is good. But I have an application running with mongoid 2.4.0-stable which has fields such as field: customer_count, type: Integer & a validation as validates_numericality_of :customer_count which was working fine. Now when I am upgrading to mongoid to 3.0.16, when I assign a string value it automatically converts it to 0. without an error. I want to throw an error on wrong data assignment, this behavior turning out strange for me. – Swapnil Chincholkar Feb 1 at 11:37
1 
I ran this and got the error: Error: could not convert string to integer (shell):1 – Mittenchops Mar 21 at 21:04

This is what I used for string to int conversion.

db.my_collection.find().forEach( function(obj) {
    obj.my_value= parseInt(obj.my_value);
    db.my_collection.save(obj);

});



출처 - http://stackoverflow.com/questions/4973095/mongodb-how-to-change-the-type-of-a-field







'DB > MongoDB' 카테고리의 다른 글

mongodb - backup  (0) 2014.02.23
mongo - TTL  (0) 2014.01.15
mongodb - Query, Update and Projection Operators  (0) 2013.07.23
mongodb - GridFS  (0) 2013.06.18
mongodb - binary data(type) 저장  (0) 2013.06.18
Posted by linuxism
,